最近,我开始研究一个非常古老的应用程序,其中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
并相信我,你不想更新它。
答案 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
。