将环境参数传递给package.json中的npm命令

时间:2017-11-08 15:52:20

标签: node.js npm environment-variables package.json

我的package.json文件中有一个脚本部分,如下所示

"scripts": {
    "start": "node_modules/.bin/grunt transpile && node dist/src/app.js",
}

当我从命令shell运行“npm start”时它工作正常。现在我需要引入我的js代码正在访问的两个环境变量,如下所示

if (process.env.APP_DATA_MODE === "complete") {
    // perform some actions here
} else {
    // perform some actions here
}

if (process.env.HOST_NAME === "dev") {
    // do some dev env related code here
} else {
    // do prod related code here
}

我想知道的是我应该如何在上面的“start”命令中引入这两个环境变量,或者至少我如何运行npm start命令并为上面列出的两个环境变量指定参数

已经尝试stack overflow article看起来像一个近似的匹配但没有运气,因为环境变量在代码执行期间一直空白

1 个答案:

答案 0 :(得分:0)

这应该有效

"start": "node_modules/.bin/grunt transpile && APP_DATA_MODE=complete HOST_NAME=dev node dist/src/app.js"

假设您需要将它们传递给app.js

好吧所以我猜我说的不够,所以让我提供一个简单的证明 我们来写一个简单的脚本

#!/bin/bash

echo "VAR1 = $VAR1"
echo "VAR2 = $VAR2"

这是输出

no env vars set

with env vars