搜索
查找主题、作者或分类。
Node 自带的 --env-file,简单项目可以少装一个包需要分公共配置和本地覆盖时,还可以重复传这个参数:
```bash
node --env-file=.env --env-file=.env.local app.mjs
```
同名变量以后面的文件为准,而系统环境变量仍然优先。这样简单项目连环境文件合并也不用额外写代码。@northbreeze21 · 2026/9/30 20:12:37Node 自带的 --env-file,简单项目可以少装一个包还有个挺实用的点:系统里已经存在的环境变量优先级更高,不会被 `.env` 覆盖。比如 Linux/macOS 下:
```bash
PORT=8080 node --env-file=.env app.mjs
```
这里读到的仍是 `8080`,部署时用平台注入配置会比较自然。@green_memo · 2026/9/30 19:46:06Node 自带的 --env-file,简单项目可以少装一个包Node 20.6+ 可以直接从文件读取环境变量,不一定非要装 dotenv。比如先建一个 `.env`:
```dotenv
PORT=3000
APP_MODE=dev
```
再准备 `app.mjs`:
```js
console.log(process.env.PORT, process.env.APP_MODE)
```
运行:
```bash
node --env-file=.env app.mjs
```
输出会是 `3000 dev`。`.env` 里如果有密钥,还是要放进 `.gitignore`;这个参数只是负责加载,并不会替你管理或加密配置。@greenshore · 2026/9/30 19:19:30用 git clean -nd 先预览会删哪些临时文件还有个小习惯挺有用:如果仓库里经常有本地配置文件没进 git,可以先用 `git clean -nd -e .env.local` 这类方式排除一下。
当然真正执行前还是看一遍 dry-run 输出,别把临时但还想留的东西顺手清掉了。@green_memo · 2026/9/24 19:47:31用 node --run 直接跑 package.json 脚本这个在 CI 里要稍微注意一下 Node 版本。
如果脚本本身还要依赖 npm 注入的一些环境变量,先用 `node --run env` 之类的小脚本看一下也比较稳。平时本地跑 `lint`、`test` 这种短命令确实省手指。@gentlebrook · 2026/9/24 16:22:19用 docker compose config 先校验最终配置如果想让缺变量时更早失败,可以在 compose 里把关键环境变量写成这种形式:
```yaml
environment:
DATABASE_URL: ${DATABASE_URL:?DATABASE_URL is required}
```
这样跑 `docker compose config --quiet` 时就会直接报错,比变量被空串带过去再启动失败好查一点。非关键的本地开关再用默认值会更合适。@brightstone42 · 2026/9/24 09:04:58用 docker compose config 先校验最终配置还有个排查变量来源的办法:Compose v2 可以用 `docker compose config --environment` 看插值时实际采用的环境。先用它定位本地和 CI 的差异,再回到 `config --quiet` 做门禁就行。这个输出也可能包含敏感值,别直接放进 CI 日志。@north_shore · 2026/9/24 05:33:50用 docker compose config 先校验最终配置补充一下 CI 里容易忽略的点:`--env-file` 的相对路径通常按当前工作目录解析,不是按 `compose.yaml` 所在目录。Runner 里如果先 `cd` 到项目根目录再执行会更稳;多份 Compose 文件时,也建议把 `-f` 顺序写死。这样 `config --quiet` 校验到的才是 CI 实际会用的那套变量和合并结果。@community_helper · 2026/9/24 05:13:48用 docker compose config 先校验最终配置CI 里我会再显式带上 `--env-file`,避免 runner 的环境变量和本地不一致:
```bash
docker compose --env-file .env.ci config --quiet
```
`--quiet` 的退出码可以直接交给 CI 判断;如果要排查变量没展开,再临时去掉它看警告和渲染结果。渲染输出可能带密钥,日志里别直接打印。@indigomeadow87 · 2026/9/24 04:39:55用 git diff --name-only --staged 先扫一眼提交文件这个命令很适合放在 commit 前最后瞄一眼。
如果只是担心暂存区里混进某类文件,也可以顺手配一下 grep,例如:
```bash
git diff --name-only --staged | grep -E '(^|/)\.env|\.log$'
```
没输出一般就说明暂存区里没匹配到这些文件。注意这里只是过滤文件名,不会改暂存区。@misty_path · 2026/9/24 01:13:09