typescript - 根据 ps 或 bash 终端有条件地部署功能“预部署”
问题描述
我在一台带有 vscode 的 Windows 机器上,并从其中的 bash 终端运行命令。但是发现firebase deploy
如果从 cmd 或 powershell 调用 cli 在我的机器上更稳定。有时会挂起 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 中运行良好。
但是我需要第二个 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
运行调用 的firebase 预部署脚本,npm run build
并且这个构建脚本被硬编码为... npm run copyKeys
或... npm run xcopyKeys4Win
。
我需要以某种方式有条件地调用“npm run deploy”,具体取决于是否需要 bash cp,例如在 mac/linux/vscode.bash/gitbash 上,或者如果使用 cmd 或 PS,则需要 xcopy。
例如,类似于 npm 构建脚本中的 firebase 托管目标设置或条件或其他东西,有人有什么想法吗?
解决方案
ref: NPM 脚本中的跨平台管道命令
更改为"copyKeys": "node ./scripts/copy-keys.js"
现在构建可以运行单个脚本。
复制键.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 ...
推荐阅读
- three.js - threejs 使用轨道控制将对象逐渐旋转到相机正在寻找的位置
- c# - 如何使用用户分配的托管标识访问 Azure 中 Function App Config 的 Key Vault
- php - sqlsrv_ 驱动程序中用于处理 PHP 代码的用户定义 SQL 函数
- doxygen - 我怎样才能让 doxygen 继续一个中间有项目符号的列表?
- r - 如何解决 as.vector (x, mode) 中的错误:无法将“闭包”类型强制转换为“任何”类型的向量
- cryptography - 如何使用 Elixir 生成 GPG 兼容和 PEM 编码的密钥?
- django - Django 所有权分配以修改或删除条目
- python - 尝试并在 python 中排除代码块以引发缺少参数的错误
- javascript - 将 http 调用包装到共享函数中
- python - 比较两个数据框列以添加具有结果的新列