Removes unused classes, ids, and element selectors from CSS.
Project description
RefreshCSS 🫧
Make your CSS so fresh, so clean.
RefreshCSS
is a Python library that removes unused classes, ids, and element selectors from CSS.
🔧 Installation
pip install refreshcss
⭐️ Features
- Python library to integrate in other Python projects
- Can be used as a filter with
django-compressor
as part of minifying CSS
🗜️ Integrate with django-compressor
Add "refreshcss.filters.RefreshCSSFilter"
to COMPRESS_FILTERS
in the Django settings file.
COMPRESS_FILTERS = {
"css": [
"refreshcss.filters.RefreshCSSFilter",
...
],
"js": [...],
}
🤓 How does it work?
- Catalogue classes, ids, and elements that are currently being used in found HTML templates
- Catalogue classes, ids, and elements in a CSS stylesheet
- Return new CSS stylesheet that only contains rules that are actively being used by the HTML
🧐 Why?
I wanted to have a filter for django-compressor
that would purge unused CSS as part of the compress
step when deploying for coltrane
apps. After dealing with a manual process and attempting to integrate https://purgecss.com and https://github.com/uncss/uncss I thought "this couldn't be that hard to do in Python".
Which is always the thought at the beginning of every side project... and is never accurate.
🙋 FAQ
Will this work with SPAs?
RefreshCSS
only inspects HTML, so if CSS classes are being changed client-side then it will not know about it.
Does this work by crawling a website URL?
Currently no, although that is a possibility in the future.
Does this support HTML written in the Django Template Language?
Yes! That was a primary reason I built my own solution. 😅 Jinja might also be possible to support with some small tweaks, although it is untested.
Is this what people mean when they say "treeshaking"?
Maybe. 🤷
I found a bug!
Thanks for trying RefreshCSS
out! Please make a PR (pull request) with a small test that replicates the bug or, if that is not possible, create a new discussion.
🤘 Related libraries
Node
Python
- treeshake: I unfortunately could not get this to work on my local environment
- cssutils: This unfortunately seemed to choke on more modern CSS (when I tested on Bulma 1.0)
- css-optomizer
🙏 Thanks
❤️ Support
This project is supported by GitHub Sponsors and Digital Ocean.
🥳 Contributors
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for refreshcss-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 614311e06827084aff4a52b48410485d50c0089bd47e17d9fb1751f6ea711f5c |
|
MD5 | 4ae080062c747cb33cbddfad422f000a |
|
BLAKE2b-256 | 37a86a8524175c78f9df776a4a2339c09815824d9ca67a18859516075557095a |