我遗漏了一些关于 .env 的信息,你能给我解释一下吗?
I am missing something about .env, could you explain it to me?
我有一个非常基本的需求:根据环境为我的 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",
所以我的想法是:
- 将命令行参数放在 "build" 和 "start" 附近,以便指定本地和生产环境文件
- 有办法在我的应用程序中访问上述配置,比如 config.API_URL
现在,我来自 spring 引导,在 spring 引导中,每个环境都有一个文件。
虽然 dotenv 可能是我的解决方案,但我在他们的网站上看到两个奇怪的东西:
- 请不要提交您的 .env 文件 --> 那么,我的同事应该如何构建我的应用程序?我通常至少推送本地和测试环境,同时将 uat 和生产文件直接放在服务器下
- 你应该只有一个 .env 文件 --> 好吧,这个文件毁了我:如果我只有一个文件,我应该如何处理多个环境???
我在这里错过了什么?你能帮我解决我的问题吗?我是 npm 的新手,所以我有点困惑...
看起来您正在使用 CRA 开发您的 React 应用程序。如果是这样,您的环境变量应该是 REACT_APP_API_URL=http://localhost:8080
。注意前缀。如果您使用的是 CRA,则必须使用前缀。关于 here 的更多信息。如果你这样做正确,变量应该在你的 javascript 中可用 process.env.REACT_APP_API_URL
.
在工作中,我们每个人在本地都有一个 .env
文件的副本,因为我们没有签入它。我们为每个环境有不同的 .env
文件 - 例如 - .env.production
、.env.development
、.env.stage
。然后我们有一个 运行 并为我们 package.json
中的每个环境构建脚本。使用 env-cmd
包,我们的脚本可能如下所示:
{
...
...
"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",
...
...
}
除此之外,每个环境我们还有一个 git 分支,因此在 stage
分支上我们将 运行 npm run build:stage
部署到 Stage 环境。我们会对生产做同样的事情。
在四处寻找多环境设置后,这就是我确定的,并且工作正常。但是,我愿意改进流程。
我有一个非常基本的需求:根据环境为我的 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",
所以我的想法是:
- 将命令行参数放在 "build" 和 "start" 附近,以便指定本地和生产环境文件
- 有办法在我的应用程序中访问上述配置,比如 config.API_URL
现在,我来自 spring 引导,在 spring 引导中,每个环境都有一个文件。
虽然 dotenv 可能是我的解决方案,但我在他们的网站上看到两个奇怪的东西:
- 请不要提交您的 .env 文件 --> 那么,我的同事应该如何构建我的应用程序?我通常至少推送本地和测试环境,同时将 uat 和生产文件直接放在服务器下
- 你应该只有一个 .env 文件 --> 好吧,这个文件毁了我:如果我只有一个文件,我应该如何处理多个环境???
我在这里错过了什么?你能帮我解决我的问题吗?我是 npm 的新手,所以我有点困惑...
看起来您正在使用 CRA 开发您的 React 应用程序。如果是这样,您的环境变量应该是 REACT_APP_API_URL=http://localhost:8080
。注意前缀。如果您使用的是 CRA,则必须使用前缀。关于 here 的更多信息。如果你这样做正确,变量应该在你的 javascript 中可用 process.env.REACT_APP_API_URL
.
在工作中,我们每个人在本地都有一个 .env
文件的副本,因为我们没有签入它。我们为每个环境有不同的 .env
文件 - 例如 - .env.production
、.env.development
、.env.stage
。然后我们有一个 运行 并为我们 package.json
中的每个环境构建脚本。使用 env-cmd
包,我们的脚本可能如下所示:
{
...
...
"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",
...
...
}
除此之外,每个环境我们还有一个 git 分支,因此在 stage
分支上我们将 运行 npm run build:stage
部署到 Stage 环境。我们会对生产做同样的事情。
在四处寻找多环境设置后,这就是我确定的,并且工作正常。但是,我愿意改进流程。