【问题标题】:Firebase separate firebase.json file for test and production - use Angular environments file variables?Firebase 单独的 firebase.json 文件用于测试和生产 - 使用 Angular 环境文件变量?
【发布时间】:2019-04-26 00:26:00
【问题描述】:

Firebase 部署的设置(Firestore、Hosting 和 Cloud Functions)位于 firebase.json 文件中。 有谁知道拥有 2 个单独的 firebase.json 文件的方法 - 一个用于测试,一个用于生产?或者使用可配置的变量?我的项目是 Angular,所以我的第一个想法是使用在构建过程中引用的环境变量 - test 和 prod。这可能吗?

我的具体目标是使用一组不同的 firebase.rules 进行测试和生产。例如,我想在部署到生产环境时指定一个 firebase.prod.rules 文件。此技术可用于更改 firebase 索引文件或托管测试与产品项目差异,firebase.json 文件中有许多可用的配置选项。

"firestore": {
    "indexes": "firestore.indexes.json",
    "rules": "firestore.rules"
}

【问题讨论】:

  • 是的,我在搜索过程中确实找到了这两篇有用的文章。但是,我已经有一个测试和产品构建,用于两个不同的 Firebase 项目。这工作得很好。似乎不支持的是每个都有一个单独的 firebase.json 文件。共享此文件和配置设置以进行测试和生产。也许有一种方法可以有单独的 firebase.json 配置但没有记录 AFAIK。
  • 我有点困惑:这个设置的全部目的不是确保您可以在具有相同配置的测试/登台和生产环境之间轻松切换吗?如果你想要单独的配置,你不能把它们放在单独的目录中吗?
  • 不确定您所说的单独目录是什么意思。是的,我一直在测试和产品构建(Angular)和部署(Firebase)之间切换。然而,有时需要在 firebase.json 中有不同的配置设置来进行测试和生产。就像有不同的测试安全规则一样。由于此文件由 firebase deploy cmd 自动部署,因此我的测试或生产规则文件将被覆盖。文件 .firebasesrc 指定测试和产品托管目标,但在两者之间共享 firebase.json 和 .rules。我认为它会更灵活。谢谢!

标签: angular firebase google-cloud-firestore


【解决方案1】:

您可以制作一个配置文件并将其放入您的资产中。

从您的评估中,您将其导入您的 ngModule 并使用 http 获取字符串的值。

在此之后,您构建您的项目并更改配置文件。现在把它改回来发球。并且您保留构建配置文件,永远不要将其再次复制到构建位置。

查看Dynamic module/service configuration and AOT 的示例。

public getEnvironment(): Promise<string> { return new Promise<string>(resolve => { let me = this; this.http.get('./config.json') .map(res => res.json()) .toPromise() .then((config) => { resolve(config.url); }); }); }

您的配置文件如下所示:

{"url": ""}

【讨论】:

  • 感谢分享这种有用的代码技术,以动态自定义方式处理配置选项。但是我认为这不适用于 Firebase。我给出的示例是 firebase.json 指定了“firestore.rules”文件(参见上面的配置)。如果在构建之前没有手动编辑,我看不到任何方法来指定不同的规则文件。因此,当我调用 firebase deploy 时,规则文件会自动部署到 test 和 prod,如果我忘记更改它就不好了。想法?
猜你喜欢
  • 2011-08-31
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2016-09-23
  • 2011-03-16
相关资源
最近更新 更多