Warum css-purger?
Wer mit Bootstrap oder anderen großen CSS-Bibliotheken arbeitet, kennt das Problem: Im finalen
Build landet oft deutlich mehr CSS, als die Seite wirklich braucht. Das kostet Ladezeit,
verschlechtert Metriken und macht Wartung unübersichtlicher.
css-purger ist eine bewusst schlanke
PHP-Library, die genau dieses Problem adressiert: Sie entfernt ungenutzte CSS-Regeln aus einem
Stylesheet auf Basis einer expliziten Selektoren-Liste.
Was macht css-purger konkret?
- Entfernt ungenutzte CSS-Regeln auf Basis definierter Selektoren
- Unterstützt verschachtelte Blöcke (z. B.
@media) - Unterstützt Selektoren mit Pseudo-Klassen wie
:hoveroder:focus - Gibt das Ergebnis optional lesbar oder minifiziert aus
- Ist erweiterbar über eigene Subklassen
- Kommt ohne zusätzliche externe Runtime aus
Wichtig: css-purger ist absichtlich leichtgewichtig und arbeitet nicht als vollständiger
CSS-AST-Parser, sondern mit performanter String-Logik.
Installation
composer require jbsnewmedia/css-purger
Praxisbeispiel mit Bootstrap
use JBSNewMedia\CssPurger\Vendors\Bootstrap;
$purger = new Bootstrap('./assets/css/bootstrap.css');
$purger->loadContent();
$purger->prepareContent();
$purger->runContent();
$purger->addSelectors([
':root',
'[data-bs-theme=light]',
'[data-bs-theme=dark]',
'body',
'h1',
'.h1',
'.container',
'.pt-3',
'.pb-3',
'.alert',
'.alert-danger',
'.btn:hover',
]);
file_put_contents('./assets/css/bootstrap-purged.css', $purger->generateOutput(false));
file_put_contents('./assets/css/bootstrap-purged.min.css', $purger->generateOutput());
Damit erzeugst du eine nachvollziehbare Version für Reviews sowie eine minifizierte
Produktionsdatei für den Live-Betrieb.
Workflow-Empfehlung aus der Praxis
- Starte mit einer konservativen Selektoren-Liste (Layout, Typografie, Kernkomponenten).
- Ergänze dynamische Zustände explizit (
:hover,:focus,.show,.active, etc.). - Prüfe die lesbare Ausgabe in Entwicklung.
- Nutze die minifizierte Ausgabe in Produktion.
Gerade in Symfony-Projekten mit klaren Templates ist der Ansatz sehr gut kontrollierbar, weil du
genau definierst, was erhalten bleiben soll.
Grenzen, die man kennen sollte
- Keine vollautomatische Erkennung aller Selektoren aus Templates/JS
- Keine vollständige CSS-Parser-Engine
- Selektoren-Liste muss bewusst gepflegt werden
Genau diese Klarheit ist gleichzeitig die Stärke: Du behältst volle Kontrolle über den finalen
CSS-Umfang.
Fazit
css-purger ist ein pragmatisches Werkzeug für Teams, die CSS-Overhead aktiv reduzieren wollen,
ohne eine schwere Build-Kette einzuführen. Besonders in PHP- und Symfony-Setups liefert der
Ansatz schnell messbare Ergebnisse: kleinere Dateien, weniger Ballast, bessere Ladezeiten.
Links
- GitHub: https://github.com/jbsnewmedia/css-purger
- Installation:
composer require jbsnewmedia/css-purger