访问package.json中的环境变量

时间:2017-02-09 13:37:31

标签: json heroku npm environment-variables

最近,我开始研究一个非常古老的应用程序,其中API端点URL在每个系统上都不同。

现在,我的package.json看起来像这样:

"start": "cross-env API_ENDPOINT=http://localhost:5000/api/v1 react-scripts start"

问题是,这个值当前是静态的,所以当我将代码部署到Heroku时,它会尝试连接我的localhost。相反,我希望做这样的事情:

"start": "cross-env API_ENDPOINT={thisShouldBeDynamic} api/v1 react-scripts start"

有什么办法吗?

聚苯乙烯。 react-app-scripts版本是^ 0.4.0所以我不能依赖.env并相信我,你不想更新它。

2 个答案:

答案 0 :(得分:4)

JSON格式不支持模板本身,因此您需要创建一个脚本,该脚本将打开config.json,更新并保存回同一文件。

您可以从https://www.npmjs.com/package/config-template开始创建自己的模板填充程序,检索所需的env变量并将其添加到配置文件,然后添加到文件中。

答案 1 :(得分:2)

您可以在使用postinstall NPM挂钩启动之前更改安装。 https://devcenter.heroku.com/articles/nodejs-support#customizing-the-build-process

例如:

"scripts": {
   "postinstall": "node ./ops/heroku-build.js"
}

然后在该脚本中,只需读取相应的env变量即可。 process.env包含所有Heroku环境变量。使用它们来修改package.json