我在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
}
}
}
答案 0 :(得分:1)
我有同样的问题。您需要将firebase.json文件复制到public /文件夹中。快速的技巧是只复制它,更好的方法是使用onPostBuild钩子
类似这样的东西:
exports.onPostBuild = () => {
fs.copySync(
path.join(__dirname, '/firebase.json'),
path.join(__dirname, '/public/firebase.json')
)
}