A linter for CSS and CSS-like languages that is:
- Complete - with coverage of all standard CSS syntax.
- Extensible - with multiple points of extension.
- Configurable - with no defaults and plenty of options to tailor the linter.
- Robust - with comprehensive test coverage and a wide range of fixtures.
- Consistent - with conventions for behaviour, naming and documentation.
- Performant - with tools to test and improve performance.
Provide built-in rules for the following three areas:
Provide rules to catch code that is valid but likely has unintended consequences e.g. duplicates and overrides.
Provide rules to limit what language features can be used, including:
- Enforcing a maximum specificity by limiting the specificity itself or the occurrence of different selector types e.g. class, ID, attribute etc.
- Enforcing best practices at the configuration level e.g. disallowing the
all
keyword for transitions as it is not performant. - Enforcing the use of a subset of features to improve consistency across a code base e.g. limiting what units are allowed (
px
orrem
etc.) - Enforcing specific patterns for selectors and names (e.g. those of custom properties).
Provide rules to enforce a diverse range of stylistic conventions, including:
- Whitespace
- Case
- Quotes
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.
Provide a robust tool with a comprehensive test suite, including:
- High coverage, currently over 95%.
- A wide range of fixtures for rules, currently over 10000.
Provide consistency throughout, including:
- Consistent names, options, violation messages, documentation and treatment of non-standard syntax within/of rules.
- Consistent requirements for inclusion.
Provide a fast tool, and the means to test and improve performance, including benchmarking of an individual rule's performance.