我在带有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脚本中的条件之类的东西,还是有人有任何想法?
答案 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 ...