Last active
November 3, 2019 02:03
-
-
Save 50kudos/3028fac585eda85aea9a to your computer and use it in GitHub Desktop.
A Bash script that lists all unused css classes in html/haml/erb files for rails project (or maybe others depending on project structure)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
cat $(find app/assets/stylesheets/ -type f) | | |
grep -Eo '\.[a-z]+[a-z0-9_-]*' | sort | uniq | sed s/.// | | |
while read CSS; do | |
if ! grep -Erqi "([^(remove|has)]?class[(:|=|[:space:]*=>[:space:]*)]*[[:space:]\W]*[(\"|')]*[-a-z0-9[:space:]]*$CSS|\\.$CSS\b)" app/views/ vendor/assets/ app/assets/javascripts/; then | |
echo $CSS >> unused.scss; | |
fi | |
done |
👍
Thanks, very useful
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The script basically does:
cat
all css/scss classes files into one placehtml
(or haml, erb),vendor css
andjavascripts
to see if this css is used.html
matched examples (css-class0), support normal html, old and new ruby hashclass
style:html: {class: 'css-class0 class1'} html: {:class => 'css-class0 class1'} opts.merge(class: 'class1 btn css-class0')) { class: "#{'btn css-class0 class1' if @accounts.empty?}" } class="class1 css-class0"
javascript
: (css-class0)vendor css
: also search in vendor css in case that the css class is an overriding of vendor's css classunused.css
files.unused
css list to search in css files and remove its block by hand. I believe this step can't be done by bot, human decision is safer. Because for example: