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

问题描述 投票:0回答:1

这是我的package.json

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

在我的程序包中,程序包根目录中有package.jsondo_something.sh文件,在test_file.spec.ts中有一个./src模块。

因此,从CLI进行npm run start首先使用bash运行shell脚本,然后在shell脚本完成时运行jest。到目前为止,这个工作正常。

但是,在FOO内部(如do_something.sh)和测试模块内部(如FOO="bar")有一个硬编码的常量,例如const FOO = "bar";。我希望不必在每次运行时都更改两个文件中的常量,而可以通过以下操作从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",
  "...": "..."
}

((我正在使用npm_config_中的here方法)

然后从do_something.sh内:

echo $FOO

并且在test_file.spec.ts内:

console.log(process.env.FOO);

我想我已经快要开始运作了,只是我想了一些缺少的步骤。

node.js bash npm environment-variables npm-scripts
1个回答
0
投票

我认为这与您所拥有的非常接近

"scripts": {
   "start": "export FOO=\"$npm_config_FOO\"; bash do_something.sh && jest"
   ...
}

将要导出FOO,它将在bashjest环境中可用。

© www.soinside.com 2019 - 2024. All rights reserved.