node.js - 将传递给 npm 脚本的参数转换为环境变量
问题描述
这是我的package.json
:
"scripts": {
"start": "bash do_something.sh && jest",
"...": "..."
}
在我的包中,包根目录下有package.json
and文件,而.do_something.sh
test_file.spec.ts
./src
因此,npm run start
从 CLI 执行首先使用 bash 运行 shell 脚本,然后当 shell 脚本完成时,它会运行 jest。到目前为止,这工作正常。
但是,在 (as ) 和测试模块 (as ) 内部有一个硬编码FOO
常量do_something.sh
,FOO="bar"
例如const FOO = "bar";
。不必在每次运行时更改两个文件中的常量,我希望能够在调用脚本时从 CLI 设置它,方法是:
npm run start --FOO=bar
然后,我想从 中的 npm 脚本定义中截取该 CLI 参数,并将其设置为可在shell 脚本和模块中package.json
访问的环境变量。do_something.sh
test_file.spec.ts
所以在package.json
我会做类似的事情:
"scripts": {
"start": "env FOO=$npm_config_FOO bash do_something.sh && jest",
"...": "..."
}
(我正在使用这里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
环境中可用。
推荐阅读
- python - Python doit 中的动态目标名称
- python - while 循环在应该停止时重复一次
- laravel - Laravel Carbon,设置特定的时:分:秒
- c++ - 我正在任意更改变量,出现“6011 取消引用空指针”的警告
- java - Spring Boot 对 LDAP 的安全调用
- regex - “ui”字符串后跟自然数/正整数的正则表达式是什么?
- sql - SQL Fiddle 上的 INSERT INTO 失败
- java - 关于 Maven 父项目的问题
- javascript - ReferenceError:未定义提取 - 反应地理编码
- go - 当 ServeMux 模式没有尾部斜杠时,未设置标头 Content-Type