iter(g251): ua tokens 增加 --unused 反向查闲置令牌
This commit is contained in:
@@ -688,6 +688,24 @@ function cmdTokens(args) {
|
||||
console.error(`no token match: ${keyword}(共 ${list.length} 个令牌,ua tokens 看全表)`);
|
||||
process.exit(1);
|
||||
}
|
||||
if (args.includes('--unused')) {
|
||||
// 反向视图:令牌定义了但没有任何组件 / 样式引用它 —— 令牌面越铺越大时靠这个收口,
|
||||
// 阈值口径只看皮肤样式表(ui.css 自身定义的自设变量也算消费),演示页与文档站不属于组件消费面。
|
||||
// 消费面 = 皮肤样式表 + 令牌自身的派生引用(--ua-shadow-highlight 引用 --ua-color-highlight 也算消费)
|
||||
const sources = [path.join(ROOT, 'packages', 'skin', 'ui', 'ui.css'), path.join(ROOT, 'packages', 'design', 'tokens', 'tokens.css')];
|
||||
const used = new Set(sources
|
||||
.filter((file) => fs.existsSync(file))
|
||||
.flatMap((file) => fs.readFileSync(file, 'utf8').match(/var\(\s*(--[\w-]+)/g) ?? [])
|
||||
.map((m) => m.replace(/var\(\s*/, '')));
|
||||
const dead = list.filter((t) => !used.has(t.cssVar));
|
||||
if (args.includes('--json')) {
|
||||
console.log(JSON.stringify({ total: list.length, unused: dead.map((t) => t.cssVar) }, null, 2));
|
||||
} else {
|
||||
for (const t of dead) console.log(`${t.cssVar} ${t.value}`);
|
||||
console.log(`共 ${list.length} 个令牌,其中 ${dead.length} 个没被皮肤包引用${dead.length ? '(确认是否还需要,删的时候亮暗与 tokens.json 一起改)' : ''}`);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (args.includes('--json')) {
|
||||
console.log(JSON.stringify(picked, null, 2));
|
||||
return;
|
||||
@@ -1825,6 +1843,6 @@ switch (cmd) {
|
||||
cmdMcp();
|
||||
break;
|
||||
default:
|
||||
console.log('usage: ua <index|list|search <kw>|info <name> [--json|--md]|recipes [编号] [--json]|docs|tokens [--json]|style|sync-counts|verify|doctor|commit-lint|lint-iterations|audit:visual [--json|--baseline]|audit:contrast [--json|--list]|audit:motion [--json]|changelog|mcp>');
|
||||
console.log('usage: ua <index|list|search <kw>|info <name> [--json|--md]|recipes [编号] [--json]|docs|tokens [--json|--unused]|style|sync-counts|verify|doctor|commit-lint|lint-iterations|audit:visual [--json|--baseline]|audit:contrast [--json|--list]|audit:motion [--json]|changelog|mcp>');
|
||||
process.exit(cmd ? 1 : 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user