A CSS redundancy analyzer that analyzes redundancy.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin Debugger doesn't need to be required Mar 21, 2013
lib
test Use correct terminology May 31, 2014
.gitignore Adding _site to gitignore Apr 20, 2013
.ruby-version Use v2.1.2 for dev May 31, 2014
.travis.yml Stop testing against 1.9.3 May 31, 2014
CHANGELOG.md
CONTRIBUTING.md Expanding Paul's original contributing doc Jun 22, 2013
CONTRIBUTORS.md Expanding Paul's original contributing doc Jun 22, 2013
Gemfile Dump debugger for byebug May 31, 2014
Gemfile.lock
LICENSE.txt Initial commit Feb 9, 2013
README.md Adds gulp to the list Aug 29, 2014
Rakefile
csscss.gemspec Upgrade parslet to at least v1.6.1 May 31, 2014

README.md

Build Status Code Climate

What is it?

csscss will parse any CSS files you give it and let you know which rulesets have duplicated declarations.

What is it for?

One of the best strategies for me to maintain CSS is to reduce duplication as much as possible. It's not a silver bullet, but it sure helps.

To do that, you need to have all the rulesets in your head at all times. That's hard, csscss is easy. Let it tell you what is redundant.

How do I use it?

First you need to install it. It is currently packaged as a ruby gem:

$ gem install csscss

Note: csscss only works on ruby 1.9.x and up. It will have trouble with ruby 1.8.x.

Then you can run it in at the command line against CSS files.

$ csscss path/to/styles.css path/to/other-styles.css

{.contact .content .primary} and {article, #comments} share 5 rules
{.profile-picture}, {.screenshot img} and {a.blurb img} share 4 rules
{.work h2:first-child, .contact h2} and {body.home h2} share 4 rules
{article.blurb:hover} and {article:hover} share 3 rules

Run it in a verbose mode to see all the duplicated styles.

$ csscss -v path/to/styles.css

Run it against remote files by passing a valid URL.

$ csscss -v http://example.com/css/main.css

You can also choose a minimum number of matches, which will ignore any rulesets that have fewer matches.

$ csscss -n 10 -v path/to/style.css # ignores rulesets with < 10 matches

If you prefer writing in Sass, you can also parse your sass/scss files.

$ gem install sass
$ csscss path/to/style.scss

Sass users may be interested in the --ignore-sass-mixins experimental flag that won't match duplicate declarations from including mixins.

If you prefer writing in LESS, you can also parse your LESS files.

$ gem install less
$ csscss path/to/style.less

LESS requires an additional javascript runtime. v8/therubyracer on most rubies, and therubyrhino on jruby.

Are there any community extensions?

Please submit an issue if you know of any others.

Why doesn't csscss automatically remove duplications for me?

I have been asked this a lot, but csscss is intentionally designed this way. Check out this post for my reasoning.

I found bugs

This is still a new and evolving project. I heartily welcome feedback. If you find any issues, please report them on github.

Please include the smallest CSS snippet to describe the issue and the output you expect to see.

Who are you?

My name is Zach Moazeni. I work for an awesome company. And we're hiring!

I'm a dev, I can help

Awesome! Thanks! Here are the steps I ask:

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Make sure the tests pass (bundle exec rake test)
  5. Push to the branch (git push origin my-new-feature)
  6. Create new Pull Request