我有一个非常基本的需求:根据环境为我的API存储不同的终结点。假设这样一个简单的文件:
API_URL=http://localhost:8080
对于我的产品环境,它应该变成:
API_URL=http://myprodServer
我也想进行集成测试和一个uat端点!
看着我的package.json,我看到了:
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
所以我的想法是:
现在,我来自spring boot,在spring boot中,每个环境都有一个文件。
虽然dotenv可能是我的解决方案,但我在他们的网站上看到两个奇怪的地方:
我在这里想念什么?你能帮我解决我的问题吗?我是npm的新手,所以我有点困惑...
答案 0 :(得分:3)
您似乎正在使用CRA开发React应用。如果是这样,您的env变量应为REACT_APP_API_URL=http://localhost:8080
。注意前缀。如果使用的是CRA,则必须使用前缀。有关here的更多信息。如果正确执行此操作,则可以使用process.env.REACT_APP_API_URL
在JavaScript中使用该变量。
在工作中,我们每个人都在本地拥有。env
文件的副本,因为我们没有将其检入。对于每个环境,我们都有不同的.env
文件-例如-{{1} },.env.production
,.env.development
。然后,我们为.env.stage
中的每个环境创建了一个运行和构建脚本。使用env-cmd
包,我们的脚本可能如下所示:
package.json
与此同时,我们还在每个环境中都有一个git分支,以便在{
...
...
"start": "react-scripts start",
"start:stage": "env-cmd .env.stage.local react-scripts start",
"start:production": "env-cmd .env.production.local react-scripts start",
"build": "react-scripts build",
"build:stage": "env-cmd .env.stage.local react-scripts build",
"build:development": "env-cmd .env.development.local react-scripts build",
...
...
}
分支上,我们将运行stage
并部署到Stage环境。对于生产,我们也会这样做。
在寻找了一个多环境的设置之后,这就是我所确定的,并且可以正常工作。但是,我愿意改进流程。