根据PS或Bash终端有条件地将Firebase部署功能“预部署”

时间:2019-01-24 00:19:20

标签: typescript google-cloud-functions firebase-tools

我在带有vscode的Windows机器上,并从其中的bash终端运行命令。但是,发现firebase deploy cli如果从cmd或powershell调用,在我的机器上会更稳定。有时会挂在vscode.bash或gitbash终端上。

我的打字稿中有云功能,而firebase deploy --only functions运行预部署脚本,例如npm run build

我已将npm构建脚本更改为"build": "tsc && npm run copyKeys",,以便它将始终确保在部署之前复制对密钥的更改。密钥是在部署过程中使用的服务帐户密钥。

copyKeys脚本为"copyKeys": "cp -rf ./src/environments/service.acct.keys/ ./lib/environments/",,在bash中效果很好。

但是当使用powershell时,我需要第二个xcopyKeys4Win脚本,它变成"xcopyKeys4Win": "XCOPY .\\src\\environments\\service.acct.keys .\\lib\\environments\\service.acct.keys /s /e /y /i",可以在PS上很好地工作。

现在我的问题是当我调用npm run deploy时,该调用会运行运行firebase deploy --only functions的firebase预部署脚本的npm run build,并且此构建脚本被硬编码为{{ 1}}或... npm run copyKeys

根据是否需要bash cp,我需要某种方式有条件地调用“ npm run deploy”在mac / linux / vscode.bash / gitbash上,如果使用cmd或PS,则为xcopy。

例如类似于Firebase托管目标设置或npm build脚本中的条件之类的东西,还是有人有任何想法?

1 个答案:

答案 0 :(得分:0)

ref:Allkeys

已更改为"copyKeys": "node ./scripts/copy-keys.js",因此现在构建可以运行一个脚本。

copy-keys.js是:

const fse = require('fs-extra');
const path = require('path');

const rootPath = path.resolve('./');
const sep = path.sep;
const head = `${rootPath}${sep}`;
const tail = `${sep}environments${sep}service.acct.keys`;

const src = `${head}src${tail}`;
const dest = `${head}lib${tail}`;

fse.copySync(src, dest);

因此不再需要xcopyKeys4Win ...