10

我正在尝试清理我到 Firebase 的部署过程,并且/dist在将文件部署到主机时需要忽略除我的公用文件夹之外的所有文件。我相信它可以通过ignore设置来完成firebase.json,但除了手动指定所有文件之外,我不确定如何实现它。

示例.json

{
  "database": {
    "rules": "database.rules.json"
  },
  "hosting": {
    "public": "dist",
    "ignore": [
      // ignore all other files besides dist folder here
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}
4

3 回答 3

13

使用 glob忽略任意子目录中的任何文件或文件**夹。

然后,您可以取消忽略您的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 控制台检查已部署的文件数量:

  1. 打开 Firebase 项目的托管页面并记下文件数量。Firebase 托管信息中心
  2. 运行命令$ tree dist/(因为在本例dist/中是我们在 Firebase 主机上提供的文件夹)并记下构建文件夹中的文件数量。 构建文件夹的树

这些应该是大致相同数量的文件。

于 2016-10-25T16:23:02.420 回答
0

ignore 属性指定部署时要忽略的文件。它可以采用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
  ]
}
于 2019-12-10T12:46:21.893 回答
0

!(pattern)匹配与提供的任何模式不匹配的任何内容。

*仅匹配公共目录根目录中的文件和文件夹

{
  "hosting": {
    "public": "dist",
    "ignore": ["**, !*"],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}
于 2020-03-20T22:52:27.227 回答