如何将云功能部署到.firebaserc中的不同项目?

时间:2020-05-08 05:22:08

标签: node.js firebase google-cloud-functions firebase-tools

是否可以通过单个命令将功能部署到.firebaserc内列出的不同Firebase项目中?

我有这个样本.firebaserc

{
  "projects": {
    "default": "project1",
    "project2": "project2-abcd"
  }
}

在更新功能时,我会这样做:

firebase use default && firebase deploy && firebase use project2 && firebase deploy

如果我有大量项目,则命令会变长,因此我制作了一个节点脚本,该脚本可自动部署到.firebaserc中列出的所有项目中:

const { promisify } = require("util");

const exec = promisify(require("child_process").exec);
const readFile = promisify(require("fs").readFile);

const deploy = async () => {
  try {
    const data = await readFile("./.firebaserc", "utf-8");
    const projects = Object.keys(JSON.parse(data).projects);

    for (const proj of projects) {
      console.log(`Deploying functions to ${proj}...`);
      const { stdout, stderr } = await exec(
        `firebase use ${proj} && firebase deploy`
      );

      console.log("stdout:", stdout);
      console.log("stderr:", stderr);
    }
  } catch (e) {
    console.log(e);
  }
};

deploy();

这可行,但我正在尝试寻找另一种选择。

1 个答案:

答案 0 :(得分:0)

您可以使用--project标志吗?

例如firebase deploy --project=project2

请参见https://firebase.google.com/docs/cli#use_aliases

如果要对已分配了prod别名的Firebase项目运行单个命令,则可以运行,例如firebase deploy --project = prod。

已更新

您是否要部署.firebaserc中列出的所有项目?

可能像下面的单线命令一样使用。

例如。

cat .firebaserc | jq '.projects | keys | .[]' | xargs -I {} firebase deploy --project={}

请参阅: