首页 文章

适用于多个项目/环境的Firebase配置

提问于
浏览
11

我正在使用Cloud Functions for Firebase和三个不同的项目进行开发,测试和 生产环境 . 每个项目都有一个service-account.json . 当我将源部署到环境时,初始化如下所示:

var serviceAccount = require("./service-account-dev.json");

firebase.initializeApp({
    credential: firebase.credential.cert(serviceAccount),
    databaseURL: "https://nwDEV.firebaseio.com"
});

这有点难以处理,因为每次我想要部署到不同的环境时我都必须更改代码 . 有没有办法进行整体配置,例如在firebase.json或.firebasesrc中,它允许集成服务帐户并决定部署选择哪个配置?

否则是否有可能检测代码在哪个环境下运行并加载特定的service-account.json并设置databaseURL-property?

2 回答

  • 7

    您可以使用环境变量 . https://firebase.google.com/docs/functions/config-env

    • 选择项目(可以使用命令firebase list查看它们): firebase use my-project-development

    • 设置环境变量 firebase functions:config:set app.environment="dev"

    • 在函数文件中,应用条件选择文件: const serviceAccount = functions.config().app.environment === 'dev' ? 'credentials-dev.json' : 'credentials-prod.json';

    然后您可以根据项目使用该文件:

    firebase.initializeApp({
        credential: firebase.credential.cert(serviceAccount),
        databaseURL: "https://nwDEV.firebaseio.com"
    });
    
  • 2

    根据我对您的问题的理解,您正在寻找的是一个解决方案,将您正在部署的 Cloud 功能转换为适当的设置,即 生产环境 ,开发和测试,我认为这意味着每个都是一个独特的项目,在Firebase环境中,以及数据库 .

    如果以上情况属实,那么以下内容应该有所帮助 .

    Firebase Cloud 功能和更常见的CLI可以部署到Firebase环境中的特定项目 . 为此,请在 Cloud 功能目录中的终端中执行以下命令 .

    $ firebase use -add
    

    这将允许您选择您的其他项目(例如,开发)并为其分配别名(如果是这样,我建议“开发”) . 然后,在部署函数时,您可以使用别名选择要部署到哪个项目(以及数据库) .

    $ firebase use default # sets environment to the default alias
        $ firebase use development # sets environment to the development alias
    

    欲了解更多信息,请参阅:https://firebase.googleblog.com/2016/07/deploy-to-multiple-environments-with.html

    您可能需要做的一件事就是使用 Cloud 功能的默认配置设置 .

    $ admin.initializeApp(functions.config().firebase);
    

相关问题