无法访问NPM环境变量

时间:2016-11-14 11:04:25

标签: node.js macos npm command-line-interface

在我的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。

2 个答案:

答案 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)

我的解决方案:

  1. 使用foo

  2. 设置npm config set foo bar
  3. 从package.json中删除了配置对象。

  4. 在NPM $npm_package_config_foo属性中将$npm_config_foo更改为scripts