【问题标题】:Gatsby Cloud doesn't seem to be using firebase.json file when deploying Gatsby site to Firebase CDN将 Gatsby 站点部署到 Firebase CDN 时,Gatsby Cloud 似乎没有使用 firebase.json 文件
【发布时间】:2020-03-19 18:25:01
【问题描述】:

我在 Firebase 上托管的 Gatsby 网站的部署过程有些复杂,因此我使用 Gatsby Cloud 构建网站并将其部署到 Firebase。我有一组缓存控制规则,我希望站点在部署到 Firebase 时使用这些规则,这些规则位于 firebase.json 文件中(如下所示)。当我从本地计算机部署站点时它工作正常,但是当 Gatsby Cloud 构建并部署到 firebase 时,它​​似乎忽略了 firebase.json 文件,而支持我看不到的其他配置,因此缓存控制规则被忽略。知道如何让 Gatsby Cloud 尊重我的 firebase.json 文件吗?

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ]
  },
  "hosting": {
    "public": "public",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "headers": [
      {
        "source": "**/*",
        "headers": [
          {
            "key": "cache-control",
            "value": "cache-control: public, max-age=0, must-revalidate"
          }
        ]
      },
      {
        "source": "static/**",
        "headers": [
          {
            "key": "cache-control",
            "value": "public, max-age=31536000, immutable"
          }
        ]
      },
      {
        "source": "**/*.@(css|js)",
        "headers": [
          {
            "key": "cache-control",
            "value": "public, max-age=31536000, immutable"
          }
        ]
      },
      {
        "source": "sw.js",
        "headers": [
          {
            "key": "cache-control",
            "value": "cache-control: public, max-age=0, must-revalidate"
          }
        ]
      },
      {
        "source": "page-data/**",
        "headers": [
          {
            "key": "cache-control",
            "value": "cache-control: public, max-age=0, must-revalidate"
          }
        ]
      }
    ]
  },
  "storage": {
    "rules": "storage.rules"
  },
  "emulators": {
    "functions": {
      "port": 5001
    }
  }
}

【问题讨论】:

    标签: firebase gatsby


    【解决方案1】:

    我有同样的问题。您需要将 firebase.json 文件复制到 public/ 文件夹中。快速破解就是复制它,最好使用 onPostBuild 钩子

    类似这样的:

    exports.onPostBuild = () => {
      fs.copySync(
        path.join(__dirname, '/firebase.json'),
        path.join(__dirname, '/public/firebase.json')
      )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2019-11-20
      • 1970-01-01
      • 2020-06-20
      • 2019-01-30
      • 1970-01-01
      • 2020-12-01
      • 2019-10-18
      相关资源
      最近更新 更多