如何从包中设置一些环境变量。Json使用NPM启动像命令?

以下是我目前在package.json中的内容:

{
  ...
  "scripts": {
    "help": "tagove help",
    "start": "tagove start"
  }
  ...
}

我想在启动脚本中设置环境变量(如NODE_ENV),同时仍然能够用一个命令启动应用程序,npm start。


当前回答

从包中运行node.js脚本。带有多个环境变量的Json:

包中。json文件:

"脚本":{ "set NODE_ENV=prod4 && set LOCAL_RUN=true && node ./x.js", },

X.js文件可以是:

let env = process.env.NODE_ENV; let isLocal = process.env.LOCAL_RUN; console.log("ENV", ENV); console.log(“isLocal”,isLocal);

其他回答

突然我发现actionhero正在使用以下代码,这解决了我的问题,只是通过传递——NODE_ENV=生产在启动脚本命令选项。

if(argv['NODE_ENV'] != null){
  api.env = argv['NODE_ENV'];
} else if(process.env.NODE_ENV != null){
  api.env = process.env.NODE_ENV;
}

我真的很感激接受其他人的答案谁知道更多更好的方法设置包中的环境变量。Json或init脚本,这些都是由别人引导的。

这将在Windows控制台工作:

"scripts": {
  "setAndStart": "set TMP=test&& node index.js",
  "otherScriptCmd": "echo %TMP%"
}

运行aaa

输出: 测验

详情请看这个答案。

{
  ...
  "scripts": {
    "start": "ENV NODE_ENV=production someapp --options"
  }
  ...
}

在Windows上尝试替换YOURENV:

  {
    ...
     "scripts": {
       "help": "set NODE_ENV=YOURENV && tagove help",
       "start": "set NODE_ENV=YOURENV && tagove start"
     }
    ...
  }

在script命令中设置环境变量:

...
"scripts": {
  "start": "node app.js",
  "test": "NODE_ENV=test mocha --reporter spec"
},
...

然后使用process.env。NODE_ENV在你的应用中。

注意:这只适用于Mac和Linux。对于Windows,请参阅注释。