Skip to main content

Vision

A linter for CSS and CSS-like languages that is:

  • complete - coverage of all standard CSS syntax
  • extensible - multiple points of extension
  • configurable - no defaults and options to tailor the linter
  • robust - comprehensive test coverage and a wide range of fixtures
  • consistent - conventions for behavior, naming and documentation
  • performant - tools to test and improve performance

Complete

Provide built-in rules for standard CSS syntax that:

Possible errors

Provide rules to catch code that is valid but likely has unintended consequences, e.g. duplicates and overrides.

Limit language features

Provide rules to limit what language features can be used to enforce:

  • a maximum specificity by limiting the overall specificity or the occurrence of different selector types, e.g. class, ID and attribute
  • best practice at the configuration level, e.g. disallowing the all keyword for transitions
  • the use of a subset of features to improve consistency across a codebase, e.g. limiting what units are allowed
  • specific patterns for selectors and names, e.g. those of custom properties

Stylistic issues

Provide rules to enforce a diverse range of stylistic conventions, including:

  • whitespace
  • case
  • quotes

Extensible

Provide multiple points of extensions, including:

  • plugins - build community rules to support methodologies, toolsets, non-standard CSS features, or very specific use cases
  • extendable configs - extend and share configurations
  • formatters - format Stylelint result objects
  • custom syntax - use any PostCSS-compatible syntax module

Robust

Provide a robust tool with a comprehensive test suite, including:

  • high coverage, currently over 95%
  • a wide range of fixtures for rules

Consistent

Provide consistency throughout, including consistent rules.

Performant

Provide a fast tool and the means to test and improve performance, including benchmarking of an individual rule's performance.