Skip to content

feat(config): reject unknown configuration fields - #164

Merged
luojiyin1987 merged 1 commit into
masterfrom
feat/reject-unknown-config-fields
Aug 22, 2026
Merged

feat(config): reject unknown configuration fields#164
luojiyin1987 merged 1 commit into
masterfrom
feat/reject-unknown-config-fields

Conversation

@luojiyin1987

Copy link
Copy Markdown
Contributor

Closes #163

改动

validateConfigShape 增加未知顶层字段检查。已知字段:excludeFilesextensionsrules,其余一律 CONFIG_INVALID + exit 1:

[lint-md] Configure file '/path/.lintmdrc' is invalid.
Unknown configuration field "extensons".

细节:

  • 错误聚合沿用 feat(config): validate configuration shape #146 模式:先报字段类型错误,再报 unknown fields,一次全部输出
  • 不做 fuzzy suggestion("Did you mean"),先把严格 schema 做对
  • 未知字段名来自用户 JSON,输出前经 sanitizeTerminalText 清理(与 core 配置错误的终端伪造防护一致)
  • rules 内部字段不校验,继续交给 @lint-md/core,保持 CLI / Core 职责边界

测试(新增 6 个)

  • 单个 unknown field → 报错并带字段名
  • 近似拼写只报 unknown、无 "Did you mean"
  • 多个 unknown → 全部上报
  • unknown + 类型错误 → 聚合为一个 detail
  • 字段名含控制字符 → 被转义,无裸 ESC 输出
  • rules 内部含未知规则配置 → 正常接受

验证

检查项 结果
npm run typecheck 通过
npm test -- --runInBand 25 suites / 211 tests 通过
npm run test:package 通过
手动 CLI 验证 typo 场景与聚合场景输出符合预期,exit 1

@luojiyin1987
luojiyin1987 merged commit ea039a0 into master Aug 22, 2026
6 checks passed
@luojiyin1987
luojiyin1987 deleted the feat/reject-unknown-config-fields branch August 22, 2026 07:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(config): reject unknown configuration fields

1 participant