iter(g41): verify 校验 README 分组行与清单一致

This commit is contained in:
HIsheR
2026-10-26 11:52:25 +08:00
parent 931ef705da
commit cf251640b3
3 changed files with 20 additions and 2 deletions
+11 -1
View File
@@ -709,6 +709,16 @@ function checkReadme(pkgs) {
const actual = new Set(pkgs.flatMap((p) => (p.docs?.components ?? []).map((c) => c.id)));
for (const id of actual) if (!listed.has(id)) issues.push(`README.md 组件区块缺少 ${id}`);
for (const id of listed) if (!actual.has(id)) issues.push(`README.md 组件区块多出 ${id}(清单里没有)`);
// 分组行同一份清单的另一种表述:漏写/多写同样算文档漂移
const groupLine = fs.readFileSync(file, 'utf8').split(/\r?\n/).find((line) => line.startsWith('分组:'));
if (!groupLine) {
issues.push('README.md 缺少「分组:」行(组件分类导航)');
return issues;
}
const grouped = new Set(groupLine.match(/[a-zA-Z][A-Za-z0-9]*/g) ?? []);
const alias = new Set(['formItem']); // formItem 与 form 共用一条文档,分组行里会单独出现
for (const id of actual) if (!grouped.has(id)) issues.push(`README.md 分组行缺少 ${id}`);
for (const id of grouped) if (!actual.has(id) && !alias.has(id)) issues.push(`README.md 分组行多出 ${id}(清单里没有)`);
return issues;
}
@@ -871,7 +881,7 @@ function cmdVerify() {
console.error(`${issues.length} violation(s)`);
process.exit(1);
}
console.log('verify OK (manifest ↔ docs ↔ demo 一致,皮肤无硬编码颜色与未定义令牌,README 组件清单同步,backlog ↔ 留痕一致)');
console.log('verify OK (manifest ↔ docs ↔ demo 一致,皮肤无硬编码颜色与未定义令牌,README 组件清单与分组同步,backlog ↔ 留痕一致)');
}
/*** 校验 git 提交信息是否符合 COMMITTING.md 规范(参数为 message 文件路径或直接 message 文本),违规退出码 1 ***/