Tree Shaking 为什么没把没用的 CSS 类删掉?
我用 Vite + React 做项目,发现打包后的 CSS 还是包含了很多没用的类。明明只用了 .btn-primary,但 .btn-secondary、.btn-danger 这些也被打包进去了。是不是 Tree Shaking 对 CSS 不生效?
我的 CSS 是这样写的:
.btn-primary {
background: blue;
}
.btn-secondary {
background: gray;
}
.btn-danger {
background: red;
}
JS 里只 import 了这个文件,并且只用了 .btn-primary,其他类根本没引用,为啥删不掉?
要解决这个问题,可以考虑使用 PurgeCSS 或者 Vite 自带的 cssMinify 选项来清理未使用的样式。PurgeCSS 能够扫描你的源码,找到实际使用的类名并移除没用到的部分。
首先安装 PurgeCSS 相关插件
然后在 Vite 配置文件中加上这个插件:
调试看看打包后的结果,应该能清理掉那些没用到的样式了。开发中遇到这种问题挺常见的,别太纠结,找对工具就好办了。