新闻详情

新闻详情

首页 / 资讯中心 / 详情

@shadcn/lint六大核心规则一次讲透:从no-restyle到no-unknown-classes全解析

发布时间:2026/10/1 8:40:43来源:尧图网络
@shadcn/lint六大核心规则一次讲透:从no-restyle到no-unknown-classes全解析
shadcn/lint六大核心规则一次讲透从no-restyle到no-unknown-classes全解析【免费下载链接】lintAn agent-first linter for Tailwind design systems. Write design system rules that agents can verify.项目地址: https://gitcode.com/gh_mirrors/lint3/lintshadcn/lint 是一个面向 Tailwind 设计系统的 Lint 工具它帮你把哪些样式能改、哪些颜色能用变成机器可检查的规则。当 AI 编码代理或团队成员写错样式时它不仅能报错还会告诉你该用哪个变体、哪个主题色来替代——这正是它被称为 agent-first linter 的原因。本文用一篇带你吃透它的6 大核心规则。一、为什么需要 shadcn/lint用 TypeScript 类型也能限制style属性但类型报错只说不行不说该怎么做。而 shadcn/lint 的报错自带基于你组件库的修复建议列出可用的 size、variant、主题色 token 和定义它们的文件路径。它的核心特点✅不改组件 API规则写在 Lint 配置里组件代码保持灵活✅无需 shadcn/ui自己的 Tailwind 组件和主题就能用✅多框架支持React、Vue、SvelteESLint 和 Oxlint 双引擎✅官方实测在 150 次任务跑测中AI 代理基本一轮纠错即可清零违规成本降低 10%~48%二、六大规则速览 规则拦截什么一句话定位no-restyle通过className重设计系统组件外观归组件布局归页面no-raw-colorsbg-pink-500等裸色板色、未声明 token、SVG 硬编码色颜色必须走主题no-arbitrary-valuesp-[13px]、bg-[#333]等任意值值必须落在标尺上no-inline-stylesstyle内联属性、style元素样式必须走 classno-unknown-classesrounded-huge等 Tailwind 生成不了 CSS 的类名拼写和存在性兜底require-static-classesbg-${color}这类 linter 读不懂的类名保证其他规则看得见每条规则的完整文档都在 docs/rules/ 目录下规则共享的allow/deny/contracts/message选项说明见 docs/rules.md。三、no-restyle设计系统组件的外观锁 这是最核心的一条规则。设计原则是外观用组件变体布局才交给className。它怎么工作规则把你的类名分成 8 个类别layout布局、color颜色、typography排版、spacing间距、shape形状、effects特效、motion动效和unclassified无法识别。以allow: [layout]为例mt-4、w-full放行而p-4、bg-pink-500、rounded-full全部报错——且报错会列出组件的 sizes 和 variants。三个进阶玩法Contracts契约给不同组件定不同规则比如允许CardTitle改排版、允许CardContent改间距颜色谁都不能动deny 精准排除布局整体放行但单独禁掉w-*自定义文案报错信息可写成 Use a Button size: sm, lg直接告诉代理该用什么它能穿透 import、re-export 和转发className的包装组件所以SaveButton classNamep-4一样会被识别为对 Button 的重设计。 详见docs/rules/no-restyle.md四、no-raw-colors颜色只认主题 这条规则拦截三类野生颜色色板裸色bg-pink-500、text-amber-500未声明 token主题里没有highlight写bg-highlight照样报错SVG 硬编码色fill#ec4899、strokered这类字面量报错时会列出主题已声明的 token、给出附近颜色的建议并指明主题文件在哪。white、black、transparent、currentColor这类通用名直接放行。新手常见的疑问为什么utility tap-target自定义工具类不报错因为它属于你自己的词表而.text-danger { color: #f00 }这种普通选择器不会被当 token背后的颜色仍是裸色照样会被抓。 详见docs/rules/no-raw-colors.md五、no-arbitrary-values值必须落在标尺上 p-[13px]、rounded-[10px]、bg-[#333]是设计系统的大敌——它们绕过了你的 spacing 标尺和色彩 token。这条规则的亮点是能给出精确替代默认--spacing为 4px 时p-[13px]会提示Use p-3.25 instead (same value, on the scale)而且变体、负值、important 标记都会保留。注意两个边界data-[stateopen]:flex、bg-(--brand)这类任意变体和变量简写不算任意值直接放行布局类任意值可用allow: [layout]放行比如侧边栏的w-[320px]往往是合理的 详见docs/rules/no-arbitrary-values.md六、no-inline-styles样式请走 class 通道 组件里写style{{ color: red }}或塞一个style元素都会让设计系统形同虚设。这条规则的检查相当细腻✅放行用 CSS 自定义属性传递动态值style{{ --panel-width: \${width}px }}是官方推荐姿势❌报错普通内联属性、自定义属性里的硬编码色值--label-color: #ec4899、读不懂的 style 对象、style元素会顺藤摸瓜同文件的const colors { accent: #ec4899 }再引用colors.accent一样会被查出来例外按CSS 属性名配置如动画库的transform注意它不接收 Tailwind 类名。 详见docs/rules/no-inline-styles.md七、no-unknown-classes拼写错误的最后防线 rounded-huge、flex-cols、hovr:flex——这些类名 Tailwind 根本生成不了 CSS页面看起来能跑其实没生效。这条规则直接调用你项目里安装的 Tailwind v4 主题 自定义工具类 插件来做存在性校验拼写接近时给出纠错建议flex-cols→ Did you mean flex-col?编辑器里可一键替换主题里的utility自定义工具和 CSS 类选择器都被识别不误报外部样式表提供的类如editor-root通过allow加白名单官方建议先从warn级别启用边加白名单边收严。 详见docs/rules/no-unknown-classes.md八、require-static-classes让其他规则看得见 前五条规则都有一个前提类名要可读。如果你写了className{bg-${color}}linter 根本无法检查等于规则失效。这条规则专门拦截读不懂的类名✅ 放行静态字符串、完整类名间的三元选择、cn(mt-4, wide w-full)❌ 报错模板拼接、导入的未知变量、未知函数调用它是整个体系的地基读不懂的类名交给它报读懂的部分继续由其他规则把关。官方建议在组件目录内关闭它组件自己调用 variant 函数属于正常写法。 详见docs/rules/require-static-classes.md九、六条规则如何协同作战 单独使用当然可以但组合起来才是完整防线场景谁负责Button classNamep-4不该改间距no-restyleButton classNamep-[13px]值不在标尺上no-arbitrary-valuesButton classNamebg-pink-500用了裸色no-raw-colorsdiv classNameflex-cols类名不存在no-unknown-classesstyle{{ color: red }}内联样式no-inline-stylesbg-${color}读不懂require-static-classes⚠️ 两条容易踩的联动细节白名单互不通用某条规则的allow只对它自己生效no-restyle放行p-*不会放过no-arbitrary-values对p-[13px]的检查组件目录记得关规则no-restyle、no-arbitrary-values、require-static-classes要在组件目录内关闭否则组件自己给自己定样式也会报错而颜色类和存在性规则建议在组件目录保持开启完整的渐进式接入路径先 warn 后 error、逐条加规则见 docs/adoption.md规则背后的工作原理见 docs/how-it-works.md。十、新手快速上手路径 装包Node.js 20.19npm install -D shadcn/lint eslint typescript-eslint/parserOxlint 用户装oxlint即可配最小规则集先开no-arbitrary-values熟悉后再逐条加完整步骤见 SETUP.md让 AI 代理跑 lint在AGENTS.md里加一句改动后运行npm run lint并修复所有错误规则的价值立刻翻倍shadcn/ui 项目零配置components.json会自动发现组件目录和主题自建组件用settings.shadcn指定ui前缀即可规则的具体实现代码在 packages/lint/src/rules/ 下每条规则一个文件想深挖某个规则的边界行为读源码 对应测试是最高效的方式。一句话总结no-restyle管能不能改no-raw-colors和no-arbitrary-values管值对不对no-unknown-classes和no-inline-styles管写没写对require-static-classes管看不看得见。六条规则各司其职你的设计系统从此有了机器可执行的契约。【免费下载链接】lintAn agent-first linter for Tailwind design systems. Write design system rules that agents can verify.项目地址: https://gitcode.com/gh_mirrors/lint3/lint创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

CSDN首页发布文章CSDN同步助手【模拟电力变压器电气测试】使用电磁暂态程序(EMTP)对各种情景进行建模(包括:正常运行、一次绕组故障、铁芯故障)(Matlab代码实现)69 / 10 2026/10/1 19:50:39

CSDN首页发布文章CSDN同步助手【模拟电力变压器电气测试】使用电磁暂态程序(EMTP)对各种情景进行建模(包括:正常运行、一次绕组故障、铁芯故障)(Matlab代码实现)69 / 10

发布文章 ​编辑CSDN同步助手 69 / 100 0 / 256 AI提取摘要 您已同意GitCode 用户协议 和 隐私政策,我们会为您自动创建账号并备份文章至我的项目。 活动 话题 共 0 字 i今日发文额度已用完,可去这里提升额度 反馈已提交,感谢你的帮助。

阅读更多 →
STM32 串口底层深度解析|USART 中断标志、硬件 FIFO,乱码根源底层定位 2026/10/1 19:50:33

STM32 串口底层深度解析|USART 中断标志、硬件 FIFO,乱码根源底层定位

摘要 很多人调试 STM32 串口,只停留在 HAL 库HAL_UART_RxCpltCallback回调函数,遇到乱码、丢字节、偶发接收异常,只会怀疑波特率或者上位机。 但实际上大量工程里的串口玄学 bug,根源来自USART 硬件中断标志理解错误、硬件 FIFO 溢…

阅读更多 →
参保意愿预测5-标签定义与时间切分的坑 2026/10/1 19:50:33

参保意愿预测5-标签定义与时间切分的坑

参保意愿预测5-标签定义与时间切分——一个模型最容易被忽略的两个坑 模型上线后数字对不上业务预期,最常见的两个根源不在模型——在标签定义和时间切分。“最终参保"还是"当年参保”、随机切分还是时间切分——这两个决定比选RF还是GBDT重要一百倍。这篇…

阅读更多 →
基于改进型YOLOv8的森林火灾实时监测系统设计与实现 2026/10/1 19:50:33

基于改进型YOLOv8的森林火灾实时监测系统设计与实现

本研究为森林火灾智能监测提供了坚实的理论依据和高效的技术支持,并且也为计算机视觉技术应用于灾害科学领域开辟了新的实践路径。一、研究背景和问题考察由于全球气候变化越来越强烈、极端天气事件也越来越多地出现,所以森林火灾作为一次突发性很强、危…

阅读更多 →
参保意愿预测6-工程全貌与细节 2026/10/1 19:50:33

参保意愿预测6-工程全貌与细节

参保意愿预测6-从网格搜索到村级任务表——一个政务ML项目的工程全貌 模型只是中间产物——从"一份GBK乱码的CSV"到"各村任务分配表",中间是一条完整的工程流水线。这篇按数据流走一遍:编码修复→特征构建→调参训练→打分标定→分档…

阅读更多 →
800V超充往上走,充电桩里的几个电流检测点也该重新看了 2026/10/1 19:50:32

800V超充往上走,充电桩里的几个电流检测点也该重新看了

800V平台、480kW、液冷枪、600A甚至更高电流——这几年超充设备的参数越来越“猛”。但功率做上去以后,一个很容易被忽略的问题也跟着来了:这么大的电流,究竟在哪里测?用什么测?这听起来不像什么难题。毕竟电流传感器在…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉