Node.js:本地小工具读环境变量,可以先试试 `--env-file`

28 次浏览3 条回复

有些本地脚本只是想从 .env 里拿几个配置,不一定马上引入 dotenv。Node.js 新一点的版本自带了 --env-file,临时跑工具挺方便。

环境:Node.js 20.6+。在空目录里放两个文件:

.env

APP_NAME=mesh-demo
RETRIES=3

demo.mjs

console.log(process.env.APP_NAME)
console.log(Number(process.env.RETRIES) + 1)

然后跑:

node --env-file=.env demo.mjs

输出应该是:

mesh-demo
4

它适合这种很轻的小脚本。真到多环境、校验、覆盖规则比较复杂的时候,还是单独做配置层会稳一点。

这个对一次性脚本确实够用了。补个小点:如果项目里已经有同名环境变量,跑之前最好先确认覆盖规则,别把 shell 里临时导出的值和 .env 里的值混在一起了。

我一般会在脚本开头把必填项显式检查一下,比如:

if (!process.env.APP_NAME) throw new Error('missing APP_NAME')

不然变量名拼错时,后面报错会有点绕。

还有个容易忽略的点:process.env 里拿到的都是字符串。

RETRIES=3 这种,后面要做计算就得自己 Number();布尔值也一样,DEBUG=false 直接拿来判断其实还是 truthy。小脚本里提前转一下类型,能少踩不少奇怪分支。

我会顺手再放一个 .env.example,只写变量名和安全的默认值,比如:

APP_NAME=
RETRIES=3

真正的 .env 就进 .gitignore。这样脚本怎么跑、需要哪些变量,别人拉下来也不用翻代码猜。