当使用Create React App(内部使用webpack)时,我们可以在package.json
的scripts部分指定环境变量,例如:
"scripts": {
"build:a": "REACT_APP_ENV=version-a react-scripts --openssl-legacy-provider build",
"build:b": "REACT_APP_ENV=version-b react-scripts --openssl-legacy-provider build"
},
这些环境变量在运行时可用,如下所示:
// Logs "version-a" or "version-b", depending on which script was used to build the app
console.log(process.env.REACT_APP_ENV);
如何在一个不使用Create React App的项目中实现相同的功能?
以下是我的版本:
"scripts": {
"serve:production": "REACT_APP_ENV=version-a && webpack --config ./bundler/webpack.prod.js && serve ./dist -l 4000",
},
我在macOS上运行。我试过zsh和bash。我使用的是webpack(v5.88.2)。记录process.env.REACT_APP_ENV
的结果总是undefined
。
我在.env
文件中设置的环境变量工作正常;我使用dotenv-webpack
插件。这个问题特别是在package.json
中设置的环境变量(如上所示)。
1条答案
按热度按时间oknwwptz1#
这里有一个简单的例子,我总是如何使用它。正如你所看到的,我正在使用
dotenv-webpack
插件。我的环境文件是:
/src/environments/environment.development.env
/src/environments/environment.production.env
下面是我的package.json脚本部分:
为了使用环境变量
NODE_ENV
,我使用了cross-env
包,所以我可以在Linux和Windows下使用它:以下文章可能会对你有所帮助:How to set NODE_ENV to production/development in OS X