使用.env和create-react-app

时间:2017-09-05 13:33:41

标签: reactjs environment-variables create-react-app

我需要为每个开发/生产服务器加载一个不同的.env文件。

Dev/Prod Server     | .env file
---------------------------------------------
localhost           | .env.development.local
development         | .env.development
qa                  | .env.qa
production          | .env.production

所以,我试图以这种方式编辑package.json

"start-js": "react-scripts start .env.development.local",
"start": " npm-run-all -p watch-css start-js",
"build:dev": "npm run build-css && react-scripts build .env.development",
"build:qa": "npm run build-css && react-scripts build .env.qa",
"build:pro": "npm run build-css && react-scripts build .env.production"

但是如果我执行build:*命令,加载的文件总是.env.production,因为NODE_ENV是生产的。是否可以使用"build:*命令加载其他.env文件?

2 个答案:

答案 0 :(得分:2)

我使用react-app-env解决了我的问题并重命名.env文件。

Dev/Prod Server     | .env file
---------------------------------------------
qa                  | qa.env

例如,build:qa脚本变为:

"build": "npm run build-css && react-scripts build",
"build:qa": "react-app-env --env-file=qa.env build"

答案 1 :(得分:0)

我是switchenv的作者。这是一个命令行工具,用于从Keepass条目(注释字段中的内容)中快速切换.env文件

仅运行yarn switchenv development将会替换您的.env文件。

运行yarn switchenv production并将您的.env文件替换为生产文件。

基本上,所有.env文件都作为条目存储在Keepass文件中。每个条目的.env文件的内容应存储在“注释”字段中。使用switchenv读取该Keepass文件,并将.env文件替换为条目的注释。