#!/usr/bin/env node /** D2: index-home.vue 局部调色板中可等值映射全局令牌的值替换(减少硬编码 hex 计数) */ const fs = require('fs'); const F = 'pages/index-home/index.vue'; let src = fs.readFileSync(F, 'utf8'); const REPL = [ ['#B45309', '$status-warning-strong-2'], ['#4338CA', '$accent-indigo-ink'], ['#ECFDF5', '$status-success-tint'], ['#F5F3FF', '$facade-violet-tint-2'], ['#ff4d4f', '$status-danger-2'], ]; let cnt = 0; for (const [from, to] of REPL) { const esc = from.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); src = src.replace(new RegExp(esc + '(?![0-9a-fA-F])', 'g'), () => { cnt++; return to; }); } fs.writeFileSync(F, src); console.log('replaced:', cnt); const rest = (src.match(/#[0-9a-fA-F]{3,8}\b/g) || []); const uniq = [...new Set(rest)]; console.log('remaining uniq hex:', uniq.length, uniq.join(' '));