d23-completion-rate.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env node
  2. /**
  3. * D23: completion-rate.vue 完成率页 flat 色收编全局令牌 (debt 60 -> 0)
  4. * $c-comp-* 局部色阶 -> uni.scss $flat-* 全局令牌;移除页面 palette 声明
  5. */
  6. const fs = require('fs');
  7. const F = 'pages/stats/completion-rate.vue';
  8. let src = fs.readFileSync(F, 'utf8');
  9. const MAP = [
  10. ['$c-comp-bg', '$flat-bg'],
  11. ['$c-comp-card', '$flat-card'],
  12. ['$c-comp-warm', '$flat-warm'],
  13. ['$c-comp-done-deep', '$flat-teal-deep'], // 先长后短
  14. ['$c-comp-done', '$flat-teal'],
  15. ['$c-comp-ink', '$flat-ink'],
  16. ['$c-comp-muted2', '$flat-muted-2'],
  17. ['$c-comp-muted', '$flat-muted'],
  18. ['$c-comp-danger-line', '$flat-danger-line'],
  19. ['$c-comp-orange-text', '$flat-orange-text'],
  20. ['$c-comp-bar-yellow', '$flat-bar'],
  21. ['$c-comp-bar-green-to', '$flat-green-deep'],
  22. ['$c-comp-bar-green', '$flat-green'],
  23. ];
  24. for (const [from, to] of MAP) {
  25. const re = new RegExp(from.replace('$', '\\$') + '(?![\\w-])', 'g');
  26. src = src.replace(re, to);
  27. }
  28. // 移除 palette 声明块(现已全部指向全局令牌)
  29. src = src.replace(
  30. /\/\/ ===== 完成率页专属色阶[^\n]*\n(?:\$c-comp-[^\n]*\n)+\n/,
  31. ''
  32. );
  33. fs.writeFileSync(F, src);
  34. console.log('done; remaining $c-comp:', (src.match(/\$c-comp-/g) || []).length);
  35. const lines = src.split('\n');
  36. let n = 0;
  37. for (let i = 0; i < lines.length; i++) {
  38. if (/#[0-9a-fA-F]{3,8}\b/.test(lines[i])) { console.log('HEX ' + (i + 1) + ': ' + lines[i].trim().slice(0, 100)); n++; }
  39. }
  40. console.log('remaining hex lines:', n);