Firebase 部署,忽略所有文件,但 public 文件夹
Firebase deploy, ignore all files but public folder
我正在尝试清理我的 Firebase 部署过程,并且在将文件部署到主机时需要忽略除我的 /dist
aka public 文件夹之外的所有文件。我相信它可以通过 firebase.json
中的 ignore
设置来完成,但我不知道除了手动指定所有文件之外如何实现它。
示例.json
:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist",
"ignore": [
// ignore all other files besides dist folder here
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
使用 glob **
到 ignore any file or folder in an arbitrary sub-directory。
然后您可以使用 !dist
取消忽略您的 dist
文件夹
所以你的 firebase.json
文件看起来像:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist",
"ignore": [
"**",
"!dist/**"
],
"rewrites": [{
"source": "**",
"destination": "/index.html"
}
]
}
}
对于较新版本的 Firebase:
新版本的 firebase 似乎不允许使用上述方法,因此只需定义应忽略的文件夹即可:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist",
"ignore": [
"**/node_modules/**",
"**/src/**",
"**/public/**"
],
"rewrites": [{
"source": "**",
"destination": "/index.html"
}
]
}
}
您可以使用 Firebase 控制台检查已部署的文件数量:
- 打开您的 Firebase 项目的托管页面并记下文件数。
- 运行 命令
$ tree dist/
(因为在本例中 dist/
是我们在 Firebase 托管上提供的文件夹)并记下构建文件夹中的文件数。
这些文件的数量应该大致相同。
ignore 属性指定在部署时要忽略的文件。它可以采用 glob 模式,与 Git
处理 .gitignore
.
的方式相同
以下是要忽略的文件的默认值:
"hosting": {
// ...
"ignore": [
"firebase.json", // the Firebase configuration file (this file)
"**/.*", // files with a leading period should be hidden from the system
"**/node_modules/**", // contains dependencies used to create your site but not run it
"**/someOtherFolder/**" // this is will exclude the folder with the name entered
"**someOtherFile**" // this will exclude that particular file
]
}
!(pattern)
匹配与提供的任何模式不匹配的任何内容。
*
只匹配 public 目录根目录下的文件和文件夹
{
"hosting": {
"public": "dist",
"ignore": ["**, !*"],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
我正在尝试清理我的 Firebase 部署过程,并且在将文件部署到主机时需要忽略除我的 /dist
aka public 文件夹之外的所有文件。我相信它可以通过 firebase.json
中的 ignore
设置来完成,但我不知道除了手动指定所有文件之外如何实现它。
示例.json
:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist",
"ignore": [
// ignore all other files besides dist folder here
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
使用 glob **
到 ignore any file or folder in an arbitrary sub-directory。
然后您可以使用 !dist
dist
文件夹
所以你的 firebase.json
文件看起来像:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist",
"ignore": [
"**",
"!dist/**"
],
"rewrites": [{
"source": "**",
"destination": "/index.html"
}
]
}
}
对于较新版本的 Firebase:
新版本的 firebase 似乎不允许使用上述方法,因此只需定义应忽略的文件夹即可:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist",
"ignore": [
"**/node_modules/**",
"**/src/**",
"**/public/**"
],
"rewrites": [{
"source": "**",
"destination": "/index.html"
}
]
}
}
您可以使用 Firebase 控制台检查已部署的文件数量:
- 打开您的 Firebase 项目的托管页面并记下文件数。
- 运行 命令
$ tree dist/
(因为在本例中dist/
是我们在 Firebase 托管上提供的文件夹)并记下构建文件夹中的文件数。
这些文件的数量应该大致相同。
ignore 属性指定在部署时要忽略的文件。它可以采用 glob 模式,与 Git
处理 .gitignore
.
以下是要忽略的文件的默认值:
"hosting": {
// ...
"ignore": [
"firebase.json", // the Firebase configuration file (this file)
"**/.*", // files with a leading period should be hidden from the system
"**/node_modules/**", // contains dependencies used to create your site but not run it
"**/someOtherFolder/**" // this is will exclude the folder with the name entered
"**someOtherFile**" // this will exclude that particular file
]
}
!(pattern)
匹配与提供的任何模式不匹配的任何内容。
*
只匹配 public 目录根目录下的文件和文件夹
{
"hosting": {
"public": "dist",
"ignore": ["**, !*"],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}