利用dotenv工具实现不同环境变量隔离与加载的步骤
- 安装dotenv:在项目根目录下通过npm或yarn安装
dotenv
,例如npm install dotenv --save-dev
。
- 创建环境变量文件:
- 在项目根目录创建
.env.development
、.env.test
、.env.production
分别对应开发、测试、生产环境。例如,.env.development
文件中可以写API_URL=http://dev-api.example.com
。
- 同时可以创建一个
.env
文件作为通用的环境变量文件,其中的变量会在各个环境中都被加载,比如一些通用的配置。
- 加载环境变量:
- 在Node.js应用入口文件(通常是
index.js
或server.js
等)中,根据当前环境加载对应的环境变量文件。例如,在Node.js中可以这样写:
const dotenv = require('dotenv');
const env = process.env.NODE_ENV || 'development';
if (env === 'development') {
dotenv.config({ path: '.env.development' });
} else if (env === 'test') {
dotenv.config({ path: '.env.test' });
} else if (env === 'production') {
dotenv.config({ path: '.env.production' });
} else {
dotenv.config();
}
- 这样就可以根据
NODE_ENV
环境变量加载不同环境的配置。
Webpack配置文件的相应调整
- 使用dotenv-webpack插件:安装
dotenv-webpack
插件,npm install dotenv-webpack --save-dev
。
- 配置Webpack:在Webpack配置文件(通常是
webpack.config.js
)中添加如下配置:
const Dotenv = require('dotenv-webpack');
module.exports = {
// 其他Webpack配置...
plugins: [
new Dotenv({
path: `./.env.${process.env.NODE_ENV}`,
systemvars: true
})
]
};
path
指定了要加载的环境变量文件路径,根据NODE_ENV
动态加载对应文件。
systemvars: true
表示允许访问系统环境变量,这样在Webpack构建过程中,process.env
中就会包含加载的环境变量,使得在前端代码中也能使用这些环境变量,例如在React应用中可以通过process.env.API_URL
访问API地址。