| 12345678910111213141516171819202122 |
- #!/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(' '));
|