当前位置: 首页 > news >正文

设计 Token 评审:语义颜色不能退化成色阶编号

设计 Token 评审:语义颜色不能退化成色阶编号

Token 要给颜色、间距和字号一个稳定来源。如果组件里不断冒出相近字面量,主题切换时就只能逐个猜哪些值代表同一种语义。

代码评审不必把每个数值都当错误,而要明确哪些属性必须走语义 Token,哪些值可以作为布局例外,并把规则交给工具执行。


评审语义 Token 的使用边界

在 CI/CD 阶段或者本地提交时,直接运行分析脚本扫描样式代码中的硬编码漏洞。

# 检索样式源码中未通过 Token 命名的硬编码色值数量 grep -rE "#[a-fA-F0-9]{3,6}|rgba?\(" src/styles/ --exclude-dir=tokens # 使用 stylelint 运行严格的设计 Token 规则校验 npx stylelint "src/**/*.css" --config .stylelintrc.json --formatter verbose

扫描结果只是线索。先区分第三方样式、一次性排版和应复用的组件样式,再决定是引入 Token 还是配置例外。


Design Tokens CI/CD 自动化流水线与防腐架构

Token 的导出、编译、校验与发布可以串成一条可追踪的流水线:


Style Dictionary 与 Stylelint 配置示例

下面是 Style Dictionary 编译和 Stylelint 规则的示例。规则范围需要随组件库成熟度逐步收紧:

// style-dictionary.config.js - 多端 Token 编译配置文件 module.exports = { source: ['tokens/**/*.json'], platforms: { css: { transformGroup: 'css', buildPath: 'build/css/', files: [ { destination: 'variables.css', format: 'css/variables', options: { outputReferences: true // 保留 Token 引用关系 } } ] }, js: { transformGroup: 'js', buildPath: 'build/js/', files: [ { destination: 'tokens.ts', format: 'javascript/es6' } ] } } };
// .stylelintrc.js - 严格拦截硬编码值的 Stylelint 规则 module.exports = { plugins: ['stylelint-declaration-strict-value'], rules: { // 强制颜色、间距、字号必须使用 var(--token-*) 格式,禁止硬编码 'scale-unlimited/declaration-strict-value': [ ['/color/', 'font-size', 'margin', 'padding', 'border-radius'], { ignoreValues: ['0', 'transparent', 'inherit', 'auto'], message: '【CR 阻断】禁止在样式中使用硬编码值 "${value}",必须替换为 Design Token 变量!' } ] } };

代码评审(CR)应关注的细节

审查组件样式时,重点看:

  • 组件优先使用语义 Token,例如var(--color-primary-action),而不是直接引用某个色阶。
  • 间距是否来自项目约定的尺度;确有特殊对齐需要时,在代码旁说明原因,而不是偷偷拼常量。
  • 主题通过 Token 映射完成。切换主题后,检查文字、边框、阴影和遮罩的对比度是否仍然可用。

工具管分发,评审管语义

Token 工具负责分发,评审与自动校验负责守边界。先覆盖常见组件,再逐步收紧规则;一次把所有数值都判成错误,只会催生更多绕过。

http://www.jsqmd.com/news/1392187/

相关文章:

  • AnyDesk ID一键重置完整指南:3分钟生成全新ID,告别泄露与连接冲突
  • 2026年品牌战略咨询机构权威推荐:不同发展阶段的品牌,该如何匹配战略咨询伙伴?
  • 揭秘企业网站建设市场前景与数字化转型必由之路的深度洞察
  • 卧床患者怎么转运到外地?昆明重症跨省长途转运方案详解 - 滚动商讯
  • 苏州铝外壳生产厂家选择哪家?能配合结构优化降本的是优选 - 品牌2026
  • 2024最新解析:杭州的网站建设公司哪家好?避开这些坑,让你的官网颜值与转化双飞跃
  • 兰州汽车隔音降噪去哪里?凡音汽车音响施工参考 - 爱听歌的小星星
  • 当缠论分析从“手工画线“变成“自动计算“:通达信缠论插件 ChanlunX 使用全记录
  • 如何3分钟算准Buck-Boost电感值?这款免费开源电感计算器来帮忙
  • 开源项目管理软件 OpenProject 使用教程:5 个关键问题一次讲透
  • 2026 成都微胖男士定制指南:穿出松弛感 - 西装爱好者
  • 如何用sys-con让Xbox与PlayStation手柄在Switch上即插即玩?第三方USB手柄终极指南
  • 一个样品,一次合作:知医邦泡泡米是如何丰富企业大健康产品开发新原料需求的
  • 窗口大小强制调整工具:专治各种“拖不动、改不了“的倔强窗口
  • 湖仓一体架构深度解读:Apache Doris如何打破数据边界实现查询提速30倍
  • # SAP直连外部数据库完全指南:从DBCO配置到ADBC代码实战(Oracle篇)
  • 孤能子视角:AI普及为何不断涌现新现象,击穿理想化标量/互易模型–––标量偷懒与AI高分辨率
  • 零基础学中医走师承路径|湖北李时珍国医培训学校中医师承火热招生 - 武汉学历升学规划
  • 2026年车间设备移位液压千斤顶推荐:哪个品牌更值得选? - 起重机械测评
  • 免费开源的 BRD 电路板查看器:5 分钟上手 OpenBoardView 完整实战指南
  • 清华MARS Lab:首个无距离上限几何Transformer SLAM,17公里长序列稳定建图
  • 2026 年淮南化粪池清理污水池吸污找哪家劳务靠谱? - LYL仔仔
  • P-tau181:阿尔茨海默病病理检测的核心靶标何以确立?
  • 手搓生产级 AI Agent 系统(12):全链路评测、影子流量与生产质量门禁
  • G-Helper华硕笔记本控制工具上手全攻略:5个步骤告别臃肿的原厂软件
  • 恋活HF Patch安装全指南:告别“缺少模组“警告,200+插件与完整汉化一次搞定
  • Agent 工具调用设计最容易踩的 5 个坑:MCP Server 不是把 REST API 包一层
  • 大连网站建设金豆多少钱大连网站建设金豆如何提升大连网站建设金豆企业品牌形象
  • Boss-Key老板键怎么用?Windows一键隐藏窗口全攻略,5分钟上手告别手忙脚乱
  • 在Windows上安装安卓应用怎么操作?APK Installer 6问6答速通指南