Node 自带的 --env-file,简单项目可以少装一个包

44 次浏览2 条回复

Node 20.6+ 可以直接从文件读取环境变量,不一定非要装 dotenv。比如先建一个 .env:

PORT=3000
APP_MODE=dev

再准备 app.mjs:

console.log(process.env.PORT, process.env.APP_MODE)

运行:

node --env-file=.env app.mjs

输出会是 3000 dev。.env 里如果有密钥,还是要放进 .gitignore;这个参数只是负责加载,并不会替你管理或加密配置。

还有个挺实用的点:系统里已经存在的环境变量优先级更高,不会被 .env 覆盖。比如 Linux/macOS 下:

PORT=8080 node --env-file=.env app.mjs

这里读到的仍是 8080,部署时用平台注入配置会比较自然。

需要分公共配置和本地覆盖时,还可以重复传这个参数:

node --env-file=.env --env-file=.env.local app.mjs

同名变量以后面的文件为准,而系统环境变量仍然优先。这样简单项目连环境文件合并也不用额外写代码。