我们有一个产品,其中包含一个Angular Web应用程序,该应用程序将Firebase与多个客户一起使用。每个客户都有其自己的Firebase实例(dev和prod)。 Firebase用于托管Web应用程序,并且该应用程序需要Firebase凭据才能访问Firestore,Auth和Cloud Storage。
我们想以一种方式设置angular.json,以便在部署到新客户端时,我们必须添加最小行数以选择正确的Firebase配置。
使用fileReplacements
选项的多个环境并不难,但是我看不到如何在它们之间共享配置,因此我们不必在所有客户中都使用生产和开发特定的配置。 / p>
我认为我们可以构建一个自定义的CLI构建器来交换配置文件,但是对于如此简单的事情来说,这似乎是一项艰巨的任务。所有客户共享相同的代码库。
我在构建工具方面的经验有限,我希望我错过了一种简单的方法来实现此目的。
谢谢!
答案 0 :(得分:1)
由于您使用的是Firebase Hosting,因此可以使用一个特殊的URL,该URL将为您提供项目的特定配置。 documentation中对此进行了描述。具体来说,第二个在SDK auto-configuration上。如果像这样的脚本那样从网页加载以下相对URL,则包括:
<script src="/__/firebase/init.js"></script>
它将为项目提供默认配置并初始化Firebase SDK。如果您不想使用脚本包含,也可以动态加载此脚本。
如果这样做,您还必须使用Firebase Hosting模拟器在本地测试您的网站,因为它将正确解释当前项目的特殊URL。
答案 1 :(得分:0)
由于2019年8月,angular-cli不支持多维环境。我结束了编写自己的简单节点脚本以进行服务和构建的过程。
该脚本将环境/{projectId}.ts复制到环境/environment.ts并启动ng build | serve。我删除了angular.json中的production:fileReplacements,所以--prod模式不会替换文件。
现在,当新的客户到达时,我只需要在具有Firebase凭证和其他自定义变量的环境中创建projectId。*。ts文件即可。
对于开发,我使用from os import path
from glob import glob
from scipy.ndimage import imread
import numpy as np
# Here i'm actually opening each image, and putting its pixel data in
# numpy arrays
images = [ imread(imgpath) for imgpath in glob(path.join('images', '*.png')) ]
# 'images' doesn't need to be a numpy array, it can be a regular
# python list (array). In fact, it can't be if the images are of
# different sizes
和用于构建node build-cli.js serve customer-dev -o
。
build-cli.js
node build-cli.js build customer-prod --prod