d2-index-home.js 861 B

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