PurgeCSS
🧠 Суть
Удаляет неиспользуемые CSS-правила → меньше размер файлов.
⚙️ Установка
bash
npm i -D purgecss💻 Базовое использование
js
import { PurgeCSS } from "purgecss";
const results = await new PurgeCSS().purge({
content: ["src/**/*.html", "src/**/*.js"], // где ищем классы
css: ["src/**/*.css"], // что чистим
keyframes: true, // сохраняем @keyframes
fontFace: true, // сохраняем @font-face
variables: true, // сохраняем CSS переменные (--var)
});💻 Safelist (исключения)
Классы которые НЕ удалять — для динамических (JS, carousel):
js
safelist: {
standard: [
'active', 'show', 'open',
/^col-/, /^order-/ // regex для всех вариантов
],
greedy: [/^embla/, /^carousel/] // даже в составных селекторах
}💻 Vite плагин
js
// vite.config.js
import { PurgeCSS } from "purgecss";
import fs from "fs";
import path from "path";
function purgecssPlugin() {
return {
name: "purgecss",
async closeBundle() {
const results = await new PurgeCSS().purge({
content: ["dist/**/*.html", "dist/**/*.js"],
css: ["dist/assets/*.css"],
output: "dist/purged",
});
},
};
}
export default defineConfig({
plugins: [purgecssPlugin()],
});⚠️ Подводные камни
- PurgeCSS не видит классы добавленные через JS → safelist
- Не чисти CSS модули — они уже изолированы
- Проверяй результат — можно удалить нужные стили
🚀 Best Practice
- UnoCSS/Tailwind → уже встроен tree-shaking, PurgeCSS не нужен
- Обычный CSS → PurgeCSS полезен
- Всегда проверяй safelist