目标
环境变量悄悄覆盖了用户的命令行参数,令人困惑。本配方按固定顺序合并默认值、配置文件、环境变量与命令行参数,使命令行参数始终优先,并补充一个测试锁定该顺序,避免重构时被悄悄改变;提醒空值应视为未设置,配置文件缺失应回退默认并告警。
步骤要点
- 按固定顺序合并四类配置源。
- 把命令行参数放在最高优先级。
- 用测试锁定优先级顺序。
- 把空值视为未设置,配置文件缺失回退默认。
const config = {
...defaults,
...readConfigFile(path),
...pickEnv(process.env),
...pickFlags(argv),
};
排错提示
- 空值可能意外覆盖,需视为未设置。
- 配置文件缺失不应硬失败。
- 嵌套结构的合并需谨慎。
适用边界
- 优先级需对用户文档化。
- 不负责密钥存储。