在我的package.json中,我设置了一个名为" foo"的配置变量。 to" bar",我用NPM脚本调用该变量。
"config": {
"foo": "bar"
},
"scripts": {
"test": "echo $npm_package_config_foo"
}
运行npm run test
应该输出bar
,但它不会。
我怀疑我有一个访问环境变量的一般问题。例如,我可以使用NPM脚本中的uglifyjs,但不能使用命令行。
从命令行运行printenv
并不会显示任何预期的NPM变量。
设置:OSX 10.11.6,NPM 2.15.11,节点6.2.0。
答案 0 :(得分:2)
您尝试的是错误的:节点环境变量只能在节点进程中使用进程全局变量访问,而不能在系统范围内访问。因此,要实现您想要的,您需要做的是进行以下更改。
<强>的package.json 强>
"config": {
"foo": "bar"
},
"scripts": {
"test": "node ./app.js"
}
<强> app.js 强>
console.log(process.env.npm_package_config_foo);
您可以找到更多信息here
答案 1 :(得分:0)
我的解决方案:
使用foo
npm config set foo bar
从package.json中删除了配置对象。
在NPM $npm_package_config_foo
属性中将$npm_config_foo
更改为scripts