将传递给 npm 脚本的参数转换为环境变量
Convert an argument passed to an npm script to an environment variable
这是我的 package.json
:
"scripts": {
"start": "bash do_something.sh && jest",
"...": "..."
}
在我的包中,包根目录下有 package.json
和 do_something.sh
文件,./src
.
中有一个 test_file.spec.ts
模块
因此,首先从 CLI 运行 执行 shell 脚本 bash,然后当 shell 脚本完成时,它 运行开个玩笑。到目前为止效果很好。
但是,在 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);
我想我快要开始工作了,我想只是缺少了几个步骤。
我认为它与您所拥有的非常接近
"scripts": {
"start": "export FOO=\"$npm_config_FOO\"; bash do_something.sh && jest"
...
}
将要导出 FOO
,它将在 bash
和 jest
环境中可用。
这是我的 package.json
:
"scripts": {
"start": "bash do_something.sh && jest",
"...": "..."
}
在我的包中,包根目录下有 package.json
和 do_something.sh
文件,./src
.
test_file.spec.ts
模块
因此,首先从 CLI 运行 执行 shell 脚本 bash,然后当 shell 脚本完成时,它 运行开个玩笑。到目前为止效果很好。
但是,在 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);
我想我快要开始工作了,我想只是缺少了几个步骤。
我认为它与您所拥有的非常接近
"scripts": {
"start": "export FOO=\"$npm_config_FOO\"; bash do_something.sh && jest"
...
}
将要导出 FOO
,它将在 bash
和 jest
环境中可用。