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 hidden or 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 |
Author
👍
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:
catall css/scss classes files into one placehtml(or haml, erb),vendor cssandjavascriptsto see if this css is used.htmlmatched examples (css-class0), support normal html, old and new ruby hashclassstyle: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.cssfiles.unusedcss 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: