【发布时间】:2016-02-29 21:32:47
【问题描述】:
我想在 npm 脚本中设置和使用环境变量。这样做的原因是我们的 npm 包将内置在 CI 管道中,并且 CI 机器为工件/覆盖/测试路径预定义了 env 变量。在开发人员的本地机器中,这些路径不存在,因此需要一个默认值。
"scripts": {
"test": "COVERAGE_PATH=${COVERAGE_PATH:-./build/coverage} istanbul cover --dir ${COVERAGE_PATH} --include-all-sources tape -- tests/*.js",
"build": "ARTIFACTS_PATH=${ARTIFACTS_PATH:-./build/} browserify -r ./index.js > ${ARTIFACTS_PATH}/bundle.js",
}
在本地机器上(此处未定义 $COVERAGE_PATH,因此将使用备用值),当我运行 npm run test 时,将生成覆盖范围并放入名为 --include-all-sources 的目录中。本质上,当 npm 运行脚本命令时,它会忽略 ${COVERAGE_PATH} 的值。我尝试在 npm 脚本中将其更改为 `echo $COVERAGE_PATH`,但结果仍然相同。
我什至尝试在运行 npm run script 命令之前预先在我的 shell 中定义变量,但是脚本中的任何 ${VAR} 仍然没有被替换。如何在 npm 脚本中正确替换 env 变量的值。
编辑:
为了清楚起见,我想知道如何在以下情况下替换正确的变量值:
VAR=build node ${VAR}/app.jsSOMEVAR=build node ${SOMEVAR}/app.js
【问题讨论】:
标签: javascript node.js npm environment-variables