jbsnewmedia / css-purger
A lightweight PHP library to purge unused CSS rules from stylesheets based on defined selectors.
1.0.1
2025-07-16 20:57 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.0
README
CssPurger is a lightweight PHP library to remove unused CSS rules from large stylesheets. Itβs perfect for optimizing CSS frameworks like Bootstrap based on actual usage in your project.
π§© Installation
Install via Composer:
composer require jbsnewmedia/css-purger
π Features
- Removes unused CSS based on custom-defined selectors
- Supports nested blocks (e.g.
@media
) - Fully supports selectors with pseudo-classes like
:hover
,:focus
, etc. - Output as minified or pretty-printed CSS
- Easily extendable via subclassing
- No external dependencies
- Bootstrap integration example included
π§ Usage
use JBSNewMedia\CssPurger\Vendors\Bootstrap; $purger = new Bootstrap('./assets/css/bootstrap.css'); $purger->loadContent(); $purger->prepareContent(); $purger->runContent(); // Add the selectors you want to keep $purger->addSelectors([ ':root', '[data-bs-theme=light]', '[data-bs-theme=dark]', 'body', 'h1', '.h1', '.container', '.pt-3', '.pb-3', '.alert', '.alert-danger', '.btn:hover', ]); // Save the result file_put_contents('./assets/css/bootstrap-purged.css', $purger->generateOutput(false)); // readable file_put_contents('./assets/css/bootstrap-purged.min.css', $purger->generateOutput()); // minified
π§ Extendability
You can subclass CssPurger
to customize parsing or handling, e.g. for Bootstrap-specific structures:
use JBSNewMedia\CssPurger\CssPurger; class CssPurgerBootstrap extends CssPurger { public function prepareContent(): self { $this->cssBlockPrefix = substr($this->content, 0, strpos($this->content, ':root')); $this->content = str_replace("*/\n:root,", "*/\n}\n:root,", $this->content); return $this; } }
β οΈ Notes
- This is not a full CSS parser β it uses lightweight string-based logic for performance
- You must explicitly define which selectors to keep
π License
MIT License β free for personal and commercial use.
π€ Contributing
Pull requests, bug reports and ideas for improvements are always welcome!
π§βπ» Author
Maintained by JBS New Media.