sublime-css-unused插件基本不可用,因其依赖静态词法分析,无法识别动态类名、data-*属性、JS注入样式及@media内规则,实际误删率超40%。

为什么 sublime-css-unused 插件基本不可用
它依赖静态词法分析,无法识别动态类名(比如 className={isDark ? 'dark-theme' : 'light-theme'})、data-* 属性选择器、JS 注入的样式,甚至对 @media 块内的规则也常漏判。实际项目中误删率超 40%,尤其在使用 Tailwind、Bootstrap 或 CSS-in-JS 的工程里,直接禁用更安全。
真正能落地的清理方式:用 PurgeCSS + Sublime 手动验证
Sublime 不是 IDE,没法自动分析 DOM 使用链,但可以作为「结果查看器」和「人工复核终端」。关键路径是:构建时用 PurgeCSS 扫描 HTML/JS 文件 → 输出精简后的 CSS → 在 Sublime 中对比原文件,逐块确认保留逻辑。
- 确保
purgecss配置中content包含所有模板路径,例如['./src/**/*.html', './src/**/*.js'] - 启用
rejected: true选项,生成purged.log列出所有被删的选择器 - 把日志里的选择器复制进 Sublime,用
Ctrl+F反向搜索原 CSS 文件,确认是否真未被引用(注意大小写、空格、伪类顺序)
Sublime 内快速定位疑似废弃样式的技巧
不依赖插件,靠原生功能提速:打开 CSS 文件后,用 Ctrl+Shift+F 全局搜索每个选择器(如 .btn-primary),限定搜索范围为 ./src 下所有 HTML/JS/TSX 文件。没命中的就标记待查。
- 搜索前先
Ctrl+H替换掉注释行(/*.*?*/启用正则),避免干扰匹配 - 对复合选择器(如
article .meta time)拆成单个类名分别搜,防止因结构变动导致漏检 - 留意
:not()、:has()和属性选择器([data-testid="header"]),它们常不在常规类名搜索范围内
删之前必须检查的三个地方
很多“无用”样式其实是运行时条件触发的,删错会导致 UI 突然崩溃。重点看:
立即学习“前端免费学习笔记(深入)”;
-
document.querySelector或getElementsByClassName直接操作的类名——这些不会出现在模板字符串里 -
classList.toggle/add/remove调用的类,尤其在事件回调或状态切换逻辑中 - CSS 动画关键帧(
@keyframes)是否被animation-name引用,这类引用常跨文件且无显式类名
复杂项目里,哪怕 PurgeCSS 报告某规则“未使用”,也要打开浏览器 DevTools → Elements 面板,手动触发相关交互,再看 computed 样式是否真的消失。静态分析永远跑不过真实渲染路径。



















