Node 中的环境变量
无论是在 Vue 还是 React 都存在区分开发环境和生产环境的配置,那么它们是如何实现的呢?
dotenv
dotenv 是一个零依赖的模块,它能将环境变量中的变量从 .env 文件加载到 process.env 中。
安装 dotenv
sh
pnpm install dotenv -D
使用 dotenv
- 创建 .env 文件
aaa=dev
- 编写入口文件
js
// index.js
require('dotenv').config({
path: './.env',
})
console.log(process.env.aaa)
- 运行
sh
node index.js
成功输出 aaa 变量
区分环境
区分环境那么就要根据某个变量来导入不同的环境文件。
例如,根据 NODE_ENV 的值来导入不同的环境文件
js
// index.js
require('dotenv').config({
path: process.env.NODE_ENV === 'production' ? '.env.production' : '.env'
})
console.log(process.env.aaa)
生产环境文件
// .env.production
aaa=prod
在运行之前得先设置 NODE_ENV 的值
// window
SET NODE_ENV=production
// lunix
EXPORT NODE_ENV=production
在设置环境值后,再运行
sh
node index.js
结果
cross-env
单纯使用 dotenv 会存在一些缺点,例如 设置 NODE_ENV 的适配问题。那么这时就需要 cross-env 配合来解决
安装
sh
npm i --save-dev cross-env
使用
在 package.json 上配置即可
json
{
"scripts": {
"dev": "cross-env NODE_ENV=production node index.js"
},
}
TIP
cross-env NODE_ENV=production 需要放在前面