Skip to content

Node 中的环境变量

无论是在 Vue 还是 React 都存在区分开发环境和生产环境的配置,那么它们是如何实现的呢?

dotenv

dotenv 是一个零依赖的模块,它能将环境变量中的变量从 .env 文件加载到 process.env 中。

安装 dotenv

sh
pnpm install dotenv -D

使用 dotenv

  1. 创建 .env 文件
aaa=dev
  1. 编写入口文件
js
// index.js

require('dotenv').config({
    path: './.env',
})

console.log(process.env.aaa)
  1. 运行
sh
node index.js

成功输出 aaa 变量
env

区分环境

区分环境那么就要根据某个变量来导入不同的环境文件。

例如,根据 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

结果
env

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 需要放在前面