d14-child-detail.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env node
  2. /**
  3. * D14: child-detail.vue 孩子详情页清理 (debt 73)
  4. * flat 设计主题专属色收编为页面级局部变量 $c-cd-*(无全局等值令牌)
  5. */
  6. const fs = require('fs');
  7. const F = 'pages/parent/child-detail.vue';
  8. let src = fs.readFileSync(F, 'utf8');
  9. const styleIdx = src.indexOf('<style');
  10. const before = src.slice(0, styleIdx);
  11. let styleBody = src.slice(styleIdx);
  12. const PAL = [
  13. ['#FFF9F0', '$c-cd-bg'], // 页面米白底 x2
  14. ['#B2BEC3', '$c-cd-muted'], // 次要灰文字 x3
  15. ['#FF7A2E', '$c-cd-orange'], // 橙渐变档
  16. ['#4ECDC4', '$c-cd-teal'], // 青绿主色 x3
  17. ['#44B09E', '$c-cd-teal-deep'], // 青绿深档 x3
  18. ['#A8E063', '$c-cd-green'], // 绿浅档
  19. ['#56AB2F', '$c-cd-green-deep'], // 绿深档
  20. ['#F093FB', '$c-cd-pink'], // 粉紫
  21. ['#F5576C', '$c-cd-red'], // 红粉
  22. ['#2D3436', '$c-cd-ink'], // 主文字深灰 x5
  23. ['#636E72', '$c-cd-muted2'], // 辅助文字中灰 x3
  24. ['#FFF5EB', '$c-cd-card'], // 暖白卡片底 x2
  25. ['#F5F0EB', '$c-cd-line'], // 暖分隔线 x2
  26. ['#FFF0F0', '$c-cd-danger-bg'], // 警示浅红底
  27. ];
  28. for (const [f, t] of PAL) {
  29. const esc = f.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
  30. styleBody = styleBody.replace(new RegExp(esc + '(?![0-9a-fA-F])', 'gi'), t);
  31. }
  32. const palette = [
  33. '// ===== 孩子详情页专属色阶(flat 图表青绿 + 米白卡片;单页专用,约定见 uni.scss §14)=====',
  34. '$c-cd-bg: #FFF9F0; // 页面米白底',
  35. '$c-cd-card: #FFF5EB; // 暖白卡片底',
  36. '$c-cd-line: #F5F0EB; // 暖分隔线',
  37. '$c-cd-ink: #2D3436; // 主文字(深灰)',
  38. '$c-cd-muted: #B2BEC3; // 次要文字(灰)',
  39. '$c-cd-muted2: #636E72; // 辅助文字(中灰)',
  40. '$c-cd-orange: #FF7A2E; // 橙渐变终档',
  41. '$c-cd-teal: #4ECDC4; // 青绿主色',
  42. '$c-cd-teal-deep: #44B09E; // 青绿深档',
  43. '$c-cd-green: #A8E063; // 绿浅档',
  44. '$c-cd-green-deep: #56AB2F; // 绿深档',
  45. '$c-cd-pink: #F093FB; // 粉紫渐变起',
  46. '$c-cd-red: #F5576C; // 红粉渐变终',
  47. '$c-cd-danger-bg: #FFF0F0; // 警示浅红底',
  48. ''
  49. ].join('\n');
  50. styleBody = styleBody.replace(/(<style[^>]*>\s*\n)/, '$1' + palette + '\n');
  51. fs.writeFileSync(F, before + styleBody);
  52. console.log('D14 done');