【问题标题】:Conditionally firebase deploy functions 'predeploy' depending on ps or bash terminal根据 ps 或 bash 终端有条件地部署功能“预部署”
【发布时间】:2019-06-17 15:46:53
【问题描述】:

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

我在 typescript 中有我的云函数,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 中运行良好。

但我需要第二个 xcopyKeys4Win 脚本,以便在使用 powershell 时变为 "xcopyKeys4Win": "XCOPY .\\src\\environments\\service.acct.keys .\\lib\\environments\\service.acct.keys /s /e /y /i",它在 PS 上运行良好。

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

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

例如类似于 npm 构建脚本中的 firebase 托管目标设置或条件或其他内容,有人有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    参考:Cross-platform pipe command in NPM script

    更改为"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 ...

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      相关资源
      最近更新 更多