A mighty, modern linter that helps you avoid errors and enforce conventions in your styles.
It's mighty because it:
- understands the latest CSS syntax including custom properties and level 4 selectors
- extracts embedded styles from HTML, markdown and CSS-in-JS object & template literals
- parses CSS-like syntaxes like SCSS, Sass, Less and SugarSS
- has over 170 built-in rules to catch errors, apply limits and enforce stylistic conventions
- supports plugins so you can create your own rules or make use of plugins written by the community
- automatically fixes some violations (experimental feature)
- is well tested with over 10000 unit tests
- supports shareable configs that you can extend or create your own of
- is unopinionated so you can tailor the linter to your exact needs
- has a growing community and is used by Facebook, GitHub and WordPress
It's easy to get started.
First, decide how you want to use stylelint:
- on the command line
- in your text editor, for example in VS Code
- in for your build tool, for example in webpack
- via the Node.js API
- as a PostCSS plugin
Then create your configuration object. You can either extend a shared configuration or craft your own.
This is the quickest way to get started. We suggest you extend either:
The recommended config turns on just the possible error rules. The standard config extends it by turning on 60 stylistic rules. We suggest you extend the:
- recommended config if you use a pretty printer like prettier
- standard config if you want stylelint to enforce stylistic conventions
You may want to add rules to your config that limit language features as these will be specific to your team and/or project.
If you use language extensions, for example @if
and @extends
, you can use a community config like stylelint-config-recommended-scss
instead.
Alternatively, you can learn about the rules and then either:
- start small and add only the rules you want to turn on
- copy, paste and adapt this example configuration which lists all of the rules and their primary options
You'll find detailed information on customising stylelint in our guides:
- user guide - how to use and configure stylelint
- developer guide - how to develop for stylelint
Read our FAQ first.
If the answer to your problem isn't there, then post it on stackoverflow.
Create a new issue if:
- you think you've found a bug
- you have a feature request
If you're upgrading, read our CHANGELOG to learn what changes to expect in the latest version.
To help out, you can:
- get involved in any open issue or pull request
- create, enhance and debug rules using our working on rules guide
- improve the documentation
- add new tests to absolutely anything
- improve the performance of rules
- open new issues about your ideas for making stylelint better
- open a pull request to show us how your idea works
- create or contribute to ecosystem tools, for example the plugin for VS Code
Our VISION document guides our work.
We have a semantic versioning policy. Any minor update may report more errors than the previous release. As such, we recommend using the tilde (~
) in package.json
e.g. "stylelint": "~7.2.0"
to guarantee the results of your builds.
Check out the Contributing Guidelines.
Without all these wonderful people this project would cease to exist.
Thank you to all our backers! Become a backer.
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. Become a sponsor.