2017-02-09 279 views
1

最近我开始研究一个非常旧的应用程序,其中API端点URL在每个系统上都不相同。访问package.json中的环境变量

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

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

的问题是,所以当我部署代码到Heroku的这个值是目前一成不变的,它会尝试连接我的本地主机。相反,我正在做这样的事情:

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

有没有办法做到这一点?

Ps。 react-app-scripts版本是^ 0.4.0,所以我不能依靠.env并相信我,你不想更新它。

回答

4

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

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

+0

因此,我应该用“prestart”触发一个单独的NodeJS文件,用正则表达式更新package.json并杀死进程? – Aris

+0

由于您必须编写命令,因此无法确定杀死进程的情况,该命令的执行次数有限。我给了你基本的方法,它可以是任何程序语言。 –