reactjs-运行create-react-app构建脚本时如何设置build .env变量?

我在create-react-app中使用以下环境变量:

console.log(process.env.REACT_APP_API_URL) // http://localhost:5555

当我通过阅读npm run build文件运行package.json时,它可以工作:

REACT_APP_API_URL=http://localhost:5555

执行npm run build时如何设置不同的值,例如package.json

这是我的package.json文件:

{
  "name": "webapp",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "react-scripts": "0.9.0"
  },
  "dependencies": {
    "react": "^15.4.2",
    "react-dom": "^15.4.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}
3个解决方案
97 votes

我想您现在可以正常工作了,但是对于其他发现此问题的人,您可以在“ create-react-app”项目根目录的.env.development文件中设置默认环境变量。

要分离出使用.env.development.env.production时使用的变量,可以创建另外两个env文件-.env.development.local.env.production.local

.env.development会将.env.production设置为.env.development.local,因此它将自动使用.env.production.local文件,而npm run build则将REACT_APP_NODE_ENV设置为production,因此它将自动使用.env.production。其中设置的值将覆盖您的2755823417453中的值。

如果您正在与其他人一起工作,并且仅具有特定于您计算机的值,则可以通过将这些值分别添加到新文件-.env.development.local.env.production.local中来覆盖.env.development.env.production中的值。

编辑:我应该指出,您设置的环境变量必须以“ REACT_APP_”开头。 “ REACT_APP_MY_ENV_VALUE”。

编辑2:如果您不仅需要开发和生产,请使用此注释指定的env-cmd。

Baldeep answered 2020-02-20T11:20:04Z
39 votes

您可以像这样使用npm start

const apiUrl = process.env.NODE_ENV === 'production' ? process.env.REACT_APP_PROD_API_URL : process.env.REACT_APP_DEV_API_URL;

您将需要设置npm startREACT_APP_DEV_API_URL

或者,如果生产URL始终相同,则可以简化它:

const apiUrl = process.env.NODE_ENV === 'production' ? 'https://example.com' : process.env.REACT_APP_DEV_API_URL;

Create React App在构建时将npm start设置为“生产”,因此您无需担心何时将其设置为生产。

注意:您必须重新启动服务器(例如,再次运行npm start)以检测环境变量的变化。

Andy_D answered 2020-02-20T11:19:20Z
11 votes

如果您想使用单独的dotenv文件来构建和/或部署到单独的环境(stage,prod),则可以使用env-cmd,如下所示:

npm install --save-dev env-cmd
./node_modules/.bin/env-cmd -f ./stage.env npm build

然后只需相应地更新package.json

  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "build:stage": "env-cmd -f ./.env.stage npm run-script build"
  },

然后要构建,只需运行以下shell命令:

npm run build:stage
chrishiestand answered 2020-02-20T11:20:34Z
translate from https://stackoverflow.com:/questions/42458434/how-to-set-build-env-variables-when-running-create-react-app-build-script