← 中文资源

简体中文版本

实现 CLI 配置优先级

定义「命令行参数 > 环境变量 > 配置文件 > 默认值」的清晰优先级,使行为可预测。

阅读英文原文

目标

环境变量悄悄覆盖了用户的命令行参数,令人困惑。本配方按固定顺序合并默认值、配置文件、环境变量与命令行参数,使命令行参数始终优先,并补充一个测试锁定该顺序,避免重构时被悄悄改变;提醒空值应视为未设置,配置文件缺失应回退默认并告警。

步骤要点

  1. 按固定顺序合并四类配置源。
  2. 把命令行参数放在最高优先级。
  3. 用测试锁定优先级顺序。
  4. 把空值视为未设置,配置文件缺失回退默认。
const config = {
  ...defaults,
  ...readConfigFile(path),
  ...pickEnv(process.env),
  ...pickFlags(argv),
};

排错提示

  • 空值可能意外覆盖,需视为未设置。
  • 配置文件缺失不应硬失败。
  • 嵌套结构的合并需谨慎。

适用边界

  • 优先级需对用户文档化。
  • 不负责密钥存储。