【发布时间】:2020-09-09 11:28:27
【问题描述】:
这是我的package.json:
"scripts": {
"start": "bash do_something.sh && jest",
"...": "..."
}
在我的包中,包根目录下有package.json 和do_something.sh 文件,./src 中有一个test_file.spec.ts 模块。
因此,从 CLI 执行 npm run start 首先使用 bash 运行 shell 脚本,然后当 shell 脚本完成时,它会运行 jest。到目前为止,这工作正常。
但是,在do_something.sh(如FOO="bar")和测试模块(如const FOO = "bar";)内部有一个硬编码常量,比如FOO。不必在每次运行时更改两个文件中的常量,我希望能够在调用脚本时从 CLI 设置它,方法是:
npm run start --FOO=bar
然后我想从package.json 中的 npm 脚本定义中截取该 CLI 参数,并将其设置为可在 do_something.sh shell 脚本和 test_file.spec.ts 模块中访问的环境变量。
所以在package.json 我会做这样的事情:
"scripts": {
"start": "env FOO=$npm_config_FOO bash do_something.sh && jest",
"...": "..."
}
(我正在使用来自here 的npm_config_ 方法)
然后从do_something.sh内部:
echo $FOO
在test_file.spec.ts内:
console.log(process.env.FOO);
我想我已经接近让它工作了,我认为只是缺少一些步骤。
【问题讨论】:
标签: node.js bash npm environment-variables npm-scripts