Introducing CSS Lint
Not too long ago, Nicole Sullivan and I announced that we've started working together. Today, we're happy to announce the release of our first collaboration effort: CSS Lint. The goal of CSS Lint, as you may guess, is to help you write better CSS code. We've spent huge chunks of time over the past couple of weeks building and debating rules to help everyone write more efficient and less problematic CSS.
The rules
To begin with, we defined several rules (explained in more detail on the CSS Lint About page). The rules are:
Parsing errors should be fixed
Don't use adjoining classes
Remove empty rules
Use correct properties for a display
Don't use too many floats
Don't use too many web fonts
Don't use too may font-size declarations
Don't use IDs in selectors
Don't qualify headings
Heading styles should only be defined once
Be careful using width: 100%
Zero values don't need units
Vendor prefixed properties should also have the standard
CSS gradients require all browser prefixes
Avoid selectors that look like regular expressions
Beware of broken box models
The rules are all created using a very simple plugin model that makes it easy to change specific rules or add new ones. The ability to turn off or on specific rules isn't yet exposed in the web or command line interfaces but is supported by the underlying API, so look for this addition soon.
In your build…
While we're happy to introduce the web interface, we also realized that you may want to incorporate this into your build system. To help, there is CSS Lint for Node.js. You can install the CSS Lint command line tool via npm:
sudo npm install -g csslint
Once installed, you can pass in any number of files or directories with CSS files:
csslint foo.css bar.css dir_of_css/
The tool then outputs the same information as the web interface.
Contribute
CSS Lint is completely open source and available on GitHub. We're actively looking for people to contribute rules, bug fixes, and extensions. The rules, by the way, are completely pluggable. You can easily strip out rules you don't want or add new rules that are more specific to your needs. Then, build a custom version that suits your needs or contribute the changes back.
The CSS parser that it's built on is also open source and available on GitHub. There are some known issues with the parser that I'm planning on addressing soon, but it's generally CSS3-compliant.
I hope Nicole and I will be able to make more tools of this nature to help everyone write better front-end code. Enjoy!





Nicholas C. Zakas's Blog
- Nicholas C. Zakas's profile
- 106 followers
