将传递给 npm 脚本的参数转换为环境变量

Convert an argument passed to an npm script to an environment variable

这是我的 package.json:

"scripts": {
  "start": "bash do_something.sh && jest",
  "...": "..."
}

在我的包中,包根目录下有 package.jsondo_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,它将在 bashjest 环境中可用。