如何在npm脚本中设置主机环境变量(package.json)

时间:2017-09-14 12:15:55

标签: node.js reactjs npm npm-scripts

想象一下,我有一个环境变量

export NODE_ENV=production

当我做的时候

echo $NODE_ENV //--> shows production which is correct

问题:

在我的package.json

scripts: {
...
"build": "export REACT_APP_NODE_ENV=${NODE_ENV:-development}; 
          npm run build-css && react-scripts build",
...
}

现在当我npm run build REACT_APP_NODE_ENV被设置为开发...但它应该是生产,因为存在NODE_ENV。

如果我这样做

scripts: {
...
"build": "export REACT_APP_NODE_ENV=production; 
   npm run build-css && react-scripts build",
...
}

它按预期正常工作,即所有脚本都使用生产的预期值访问REACT_APP_NODE_ENV。

目标

我希望避免在package.json中使用硬编码

如何设置值为${NODE_ENV} REACT_APP_NODE_ENV

"build": "export REACT_APP_NODE_ENV=${NODE_ENV}; 
  npm run build-css && react-scripts build",

1 个答案:

答案 0 :(得分:1)

您可能希望确保这是跨平台的,这将在以后为您节省一些麻烦。

这个问题已经在npm包cross-var中解决了。

然后,假设您已经导出了NODE_ENV,那么就这样使用它:

"scripts": {
    "build": "REACT_APP_NODE_ENV=${NODE_ENV}"
}