fix-growth-main-palette.js 1003 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/env node
  2. /** 对 growth-main/index.vue 的 style 块做等值 hex→令牌替换 */
  3. const fs = require('fs');
  4. const F = 'cfc-frontend/pages/growth-main/index.vue';
  5. let src = fs.readFileSync(F, 'utf8');
  6. const sidx = src.indexOf('<style');
  7. const before = src.slice(0, sidx);
  8. let styleBody = src.slice(sidx);
  9. const REPL = [
  10. ['#F97316', '$brand-primary'],
  11. ['#EA580C', '$brand-primary-dark'],
  12. ['#FFF7ED', '$uni-primary-pale'],
  13. ['#FEE2E2', '$status-danger-soft'],
  14. ['#DC2626', '$status-danger-deep'],
  15. ['#FFF', '$uni-surface'],
  16. ['#fff', '$uni-surface'],
  17. ];
  18. let cnt = 0;
  19. for (const [from, to] of REPL) {
  20. const esc = from.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
  21. const re = new RegExp(esc + '(?![0-9a-fA-F])', 'g');
  22. styleBody = styleBody.replace(re, () => { cnt++; return to; });
  23. }
  24. src = before + styleBody;
  25. fs.writeFileSync(F, src);
  26. console.log('replaced:', cnt);
  27. const rest = (src.match(/#[0-9a-fA-F]{3,8}\b/g) || []);
  28. console.log('remaining uniq hex:', [...new Set(rest)]);