NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2890 most downloaded on npm
A mighty CSS linter that helps you avoid errors and enforce conventions.
Last release 4 days ago
01 Oct 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
283 releases · first in 2014
Fixed: ensure only absolute filepaths are passed to processors (#2207).
Added: stylelint.formatters exposed in public Node API (#2190).
stylelint.formatters exposed in public Node API (#2190).stylelint.utils.checkAgainstRule for checking CSS against a standard stylelint rule within your own rule (#2173).allow-empty-input flag to CLI (#2117).except: ["after-rule"] option to rule-nested-empty-line-before (#2188).--stdin-filename in CLI and codeFilename in Node API to error if a non-existent filename is provided (#2128).--quiet) placed before an input glob no longer causes the input to be ignored (#2186).node_modules and bower_components directories are correctly ignored by default when stylelint is used as a PostCSS plugin (#2171).color-named now ignores SCSS maps, so map property names can be color names (#2182).comment-whitespace-inside no longer complains about /*! comments with non-space whitespace (e.g. newlines) (#2121).media-feature-name-no-vendor-prefix no longer throws syntax errors on unknown unprefixed variants (#2152).selector-max-compound-selectors ignores SCSS nested declarations (#2102).selector-pseudo-class-no-unknown no longer reports false positives for custom selectors (#2147).One column per quarter.
Added: option customSyntax (for Node API) and --custom-syntax (for CLI).
customSyntax (for Node API) and --custom-syntax (for CLI).font-family-no-duplicate-names rule.--custom-formatter option.string and verbose formatters now use dim instead of gray for greater compatibility with different terminal color schemes.media-feature-parentheses-space-inside handles comments within the parentheses.selector-no-qualifying-type now ignores SCSS %placeholders.Fixed: if no config is found relative to the stylesheet, look for one relative to process.cwd().
selector-no-empty rule.process.cwd().ignoreFiles globs relative to process.cwd() if config is directly passed as a JS object and no configBasedir is provided.block-no-empty.configOverrides work with plugins, extends, and processors.stylelint-disable and stylelint-enable comments.value-keyword-case.function-calc-no-unspaced-operator.no-descending-specificity now ignores custom property sets.selector-no-empty rule.process.cwd().ignoreFiles globs relative to process.cwd() if config is directly passed as a JS object and no configBasedir is provided.block-no-empty.configOverrides work with plugins, extends, and processors.stylelint-disable and stylelint-enable comments.function-calc-no-unspaced-operator false positives for SCSS interpolation.no-descending-specificity now ignores custom property sets.value-keyword-case false positives for some camel-case SVG keywords.Fixed: regression where using null to turn off a rule caused errors.
null to turn off a rule caused errors.Fixed: regression where using null for rules that take an array for their primary option would trigger a validation warning.
null for rules that take an array for their primary option would trigger a validation warning.Added: each stylesheet looks up configuration from its own path. Different files can now use different configurations during the same linting process.
process.cwd() if they aren't found relative to the invoking configuration./* stylelint-disable-next-line */ comments.media-feature-name-blacklist rule.media-feature-name-whitelist rule.ignore: ["after-declaration"] option to declaration-empty-line-before.except: ["empty"] option to function-url-quotes.function-linear-gradient-no-nonstandard-direction no longer warns when vendor-prefixed linear-gradient properties are used correctly.no-extra-semicolons now ignores the semicolon that comes after the closing brace of a custom property set.no-unknown-animations no longer delivers false positives when there are multiple animation names.number-* rules now ignore numbers in comments and strings.value-keyword-case now ignores system color keywords.Fixed: regression in 7.3.0 which caused a "Cannot read property 'length' of undefined" error on a certain selector.
Added: processors can accept options objects.
processors can accept options objects.ignore: ["inside-function"] option to color-named.--ignore-path and --report-needless-disables no longer fails when used together.block-closing-brace-newline-after and block-closing-brace-space-after now allow a trailing semicolon after the closing brace of a block.block-no-single-line now ignores empty blocks.declaration-block-no-ignored-properties now uses the value of the last occurrence of a triggering property.indentation now correctly handles _ hacks on property names.property-no-unknown now ignores SCSS nested properties.Added: --report-needless-disables and reportNeedlessDisables option.
--report-needless-disables and reportNeedlessDisables option.--ignore-disables and ignoreDisables option.--config-basedir option to CLI.declaration-block-no-redundant-longhand-properties rule.function-url-scheme-whitelist rule.media-feature-name-no-unknown rule.selector-descendant-combinator-no-non-space rule.value-list-max-empty-lines rule.ignoreProperties option to color-named.ignore: ["consecutive-duplicates-with-different-values"] option to declaration-block-no-duplicate-properties.ignore: ["comments"] option to max-line-length.ignoreAtRules option to max-nesting-depth.ignoreProperties option to unit-blacklist and unit-whitelistconfigFile and configBasedir can now be used together.max-line-length now correctly handles Windows line endings.no-descending-specificity treats selectors with pseudo-elements as distinct from their counterparts without pseudo-classes, because they actually target different elements.no-unknown-animations and unit-blacklist now handle numbers without leading zeros.root-no-standard-properties now handles custom property sets.selector-no-type ignore: ["descendant"] option now correctly handles descendants within a selector list.selector-pseudo-class-no-unknown now understands the Shadow DOM selectors of host and host-context.selector-pseudo-element-no-unknown now understands the Shadow DOM selector of slotted.Added: block-closing-brace-empty-line-before rule.
block-closing-brace-empty-line-before rule.comment-no-empty rule.custom-property-empty-line-before rule.declaration-empty-line-before rule.media-feature-name-case rule.selector-nested-pattern rule.selector-pseudo-class-blacklist rule.selector-pseudo-class-whitelist rule.ignore* secondary options of the *-no-unknown rules.ignore: ["blockless-after-same-name-blockless"] option to at-rule-empty-line-before.except: ["blockless-after-same-name-blockless"] option to at-rule-empty-line-before.ignore: ["empty-lines"] option to no-eol-whitespace.ignoreTypes option to selector-no-type to whitelist allowed types for selectors.color-named now ignores declarations that accept custom idents.font-family-name-quotes correctly handles numerical font weights for the font shorthand property.indentation now correctly handles Windows line endings within parentheticals.media-feature-no-missing-punctuation now ignores media features containing complex values e.g. (min-width: ($var - 20px)) and (min-width: calc(100% - 20px)).no-descending-specificity message to correctly show which selector should come first.selector-combinator-space-after and selector-combinator-space-before now ignore operators within parenthetical non-standard constructs.Fixed: bug causing rules in extended configs to be merged with, rather than replaced by, the extending config.
selector-class-pattern now ignores fractional keyframes selectors.selector-max-specificity now ignores selectors containing the matches() pseudo-class, and warns if the underlying specificity module cannot parse the selector.selector-no-type with secondary option ignore: ["descendant"] will now resolve nested selectors.Fixed: at-rule-blacklist, at-rule-whitelist, comment-word-blacklist, selector-attribute-operator-blacklist, selector-attribute-operator-whitelist now
at-rule-blacklist, at-rule-whitelist, comment-word-blacklist, selector-attribute-operator-blacklist, selector-attribute-operator-whitelist now accept array as first option.unit-* rules now ignore CSS hacks.Fixed: missing known-css-properties dependency.
known-css-properties dependency.Removed: --extract and extractSyleTagsFromHtml options. Instead, build and use processors. See the release planning document for more details.
--extract and extractSyleTagsFromHtml options. Instead, build and use processors. See the release planning document for more details.your-namespace/your-rule-name rule names are supported. (If your plugin provides only a single rule or you can't think of a good namespace, you can simply use plugin/my-rule.)--verbose CLI flag. Use --formatter verbose instead.0.12.x support. 4.2.1 LTS or greater is now required.media-query-parentheses-space-inside rule. Use the new media-feature-parentheses-space-inside rule instead.no-missing-eof-newline rule. Use the new rule no-missing-end-of-source-newline instead.number-zero-length-no-unit rule. Use the length-zero-no-unit rule instead.property-unit-blacklist rule. Use the declaration-property-unit-blacklist rule instead.property-unit-whitelist rule. Use the declaration-property-unit-whitelist rule instead.property-value-blacklist rule. Use the declaration-property-value-blacklist rule instead.property-value-whitelist rule. Use the declaration-property-value-whitelist rule instead."emptyLineBefore" option for declaration-block-properties-order. If you use this option, please consider creating a plugin for the community. See the release planning document for more details."single-where-required", "single-where-recommended", "single-unless-keyword", "double-where-required", "double-where-recommended" and "double-unless-keyword" options for font-family-name-quotes. Instead, use the "always-unless-keyword", always-where-recommended or always-where-required options together with the string-quotes rule."single", "double" and "none" options for function-url-quotes. Instead, use the "always" or "never" options together with the string-quotes rule."hierarchicalSelectors" option for indentation. If you use this option, please consider creating a plugin for the community. See the release planning document for more details.stylelint.utils.cssWordIsVariable().stylelint.utils.styleSearch(). Use the external style-search module instead.stylelintError to true, which in turn causes CLI to exit with a non-zero code..scss, .less, and .sss..stylelintignore now uses .gitignore syntax, and stylelint looks for it in process.cwd().ignored: true property, which various formatters can use as needed. The standard string formatter prints nothing for ignored files; but when the verbose formatter is used, ignored files are included in the filelist.-v flag to display version number.comment-word-blacklist no longer ignores words within copyright comments.comment-word-blacklist will now identify strings within comments, rather than just at the beginning of, when the string option is used.declaration-block-no-ignored-properties now detects use of min-width and max-width with inline, table-row, table-row-group, table-column and table-column-group elements.declaration-block-no-ignored-properties now detects use of overflow, overflow-x and overflow-y with inline elements.declaration-block-no-ignored-properties now ignores the combination of float and display: inline-block | inline.font-family-name-quotes now checks the font property in addition to the font-family property.font-family-name-quotes treats -apple-* and BlinkMacSystemFont system fonts as keywords that should never be wrapped in quotes.indentation now checks inside of parentheses by default. If you use the indentInsideParens: "once" secondary option, simply remove it from your config. If you do not want to check inside of parentheses, use the new ignore: ["inside-parens"] secondary option. The indentInsideParens: "twice" and indentInsideParens: "once-at-root-twice-in-block" secondary options are unchanged.keyframe-declaration-no-important now checks vendor prefixed @keyframes at-rules.selector-attribute-quotes now checks attribute selectors with whitespace around the operator or inside the brackets.time-no-imperceptible now checks vendor prefixed properties.unit-* rules now check @media values too.ruleFunction.primaryOptionArray = true.media-feature-parentheses-space-inside rule.no-missing-end-of-source-newline rule.property-no-unknown rule.no-unknown-animations now classifies vendor prefixed @keyframes at-rules as known.Added: defaultSeverity configuration option.
defaultSeverity configuration option.stylelint) is equivalent to stylelint --help.function-url-no-scheme-relative rule.selector-attribute-quotes rule.process.exitCode with stdOut to allow the process to exit naturally and avoid truncating output.function-calc-no-unspaced-operator correctly interprets negative fractional numbers without leading zeros and those wrapped in parentheses.no-extra-semicolons now ignores semicolons after Less mixins.number-max-precision now ignores uppercase and mixed case @import at-rules.selector-max-specificity no longer crashes on selectors containing :not() pseudo-classes.time-no-imperceptible correctly handles negative time.Deprecated: -e and --extract CLI flags, and the extractStyleTagsFromHtml node API option. If you use these flags or option, please consider creating a…
-e and --extract CLI flags, and the extractStyleTagsFromHtml node API option. If you use these flags or option, please consider creating a processor for the community. See the release planning document for more details.at-rule-no-unknown rule.no-empty-source rule.except: ["after-single-line-comment"] option for rule-non-nested-empty-line-before.ignoreProperties: [] option for declaration-block-no-duplicate-properties.Fixed: block-*-brace-*-before CRLF (\r\n) warning positioning.
block-*-brace-*-before CRLF (\r\n) warning positioning.no-descending-specificity now does comparison of specificity using ints, rather than strings.selector-no-type and selector-type-case now ignore non-standard keyframe selectors (e.g. within an SCSS mixin).selector-type-no-unknown no longer reports fractional keyframe selectors.Added: ignoreFunctions: [] option for function-name-case.
ignoreFunctions: [] option for function-name-case.findFontFamily util correctly interpret <font-size>/<line-height> values with unitless line-heights.indentation better understands nested parentheticals that aren't just Sass maps and lists.no-unsupported-browser-features message now clearly states that only fully supported features are allowed.selector-max-specificity no longer reports that a selector with 11 elements or more has a higher specificity than a selector with a single classname.selector-type-no-unknown no longer warns for complex keyframe selectors.Deprecated: number-zero-length-no-unit. Use length-zero-no-unit instead.
number-zero-length-no-unit. Use length-zero-no-unit instead.property-*-blacklist and property-*-whitelist. Use declaration-property-*-blacklist and declaration-property-*-whitelist instead.-v and --verbose CLI flags. Use -f verbose or --formatter verbose instead.stylelint.util.styleSearch(). Use the external module style-search instead.ignorePath (for JS) and --ignore-path (for CLI).-h alias for --help CLI flag.at-rule-blacklist rule.at-rule-name-newline-after rule.at-rule-whitelist rule.ignore: "blockless-group" option for at-rule-empty-line-before.ignoreAtRules: [] option for at-rule-empty-line-before.function-blacklist now accepts regular expressions.function-whitelist now accepts regular expressions.at-rule-name-newline-after now correctly accepts one or more newlines.declaration-block-semicolon-newline-before now correctly accepts one or more newlines.function-url-quotes ignores values containing $sass and @less variables.function-whitespace-after ignores postcss-simple-vars-style interpolation.indentation better understands nested parentheticals, like nested Sass maps.no-extra-semicolons reports errors on the correct line.selector-combinator-space-* rules now ignore escaped combinator-like characters.selector-type-no-unknown ignores non-standard usage of percentage keyframe selectors (e.g. within an SCSS mixin).value-keyword-case now ignores custom idents of properties animation, font, list-style.Deprecated: "emptyLineBefore" option for declaration-block-properties-order. If you use this option, please consider creating a plugin for the communi…
"emptyLineBefore" option for declaration-block-properties-order. If you use this option, please consider creating a plugin for the community. See the release planning document for more details."single-where-required", "single-where-recommended", "single-unless-keyword", "double-where-required", "double-where-recommended" and "double-unless-keyword" options for font-family-name-quotes. Instead, use the "always-unless-keyword", always-where-recommended or always-where-required options together with the string-quotes rule."single", "double" and "none" options for function-url-quotes. Instead, use the "always" or "never" options together with the string-quotes rule."hierarchicalSelectors" option for indentation. If you use this option, please consider creating a plugin for the community. See the release planning document for more details.selector-list-comma-* rules now ignore Less mixins.selector-max-compound-selectors no longer errors on Less mixins.selector-type-no-unknown now ignores all An+B notation and linguistic pseudo-classes.selector-type-no-unknown now ignores obsolete HTML tags and <hgroup>.Added: selector-max-compound-selectors rule.
selector-max-compound-selectors rule.babel-polyfill removed so it doesn't clash with other processes using babel-polyfill.selector-type-case and selector-type-no-unknown rules now ignore SCSS placeholder selectors.Fixed: selector-pseudo-class-case, selector-pseudo-class-no-unknown, selector-pseudo-element-case, selector-pseudo-element-no-unknown rules now ignore
selector-pseudo-class-case, selector-pseudo-class-no-unknown, selector-pseudo-element-case, selector-pseudo-element-no-unknown rules now ignore SCSS variable interpolation.selector-type-no-unknown now ignores nested selectors and keyframe selectors.Fixed: shorthand-property-no-redundant-values now ignores background, font, border, border-top, border-bottom, border-left, border-right, list-style,
shorthand-property-no-redundant-values now ignores background, font, border, border-top, border-bottom, border-left, border-right, list-style, transition properties.unit-no-unknown now ignores hex colors.Added: keyframe-declaration-no-important rule.
keyframe-declaration-no-important rule.selector-attribute-operator-blacklist rule.selector-attribute-operator-whitelist rule.selector-pseudo-class-no-unknown rule.selector-type-no-unknown rule.message.postcss-selector-parser and register them as PostCSS warnings, providing a better UX for editor plugins.font-family-name-quotes, media-feature-no-missing-punctuation, media-query-list-comma-newline-after, media-query-list-comma-newline-before, media-query-list-comma-space-after and media-query-list-comma-space-before rules now better ignore SCSS, Less variables and nonstandard at-rules.no-unknown-animations now ignores ease value.unit-blacklist, unit-case, unit-no-unknown, unit-whitelist now better accounts interpolation.unit-no-unknown no longer breaks Node 0.12 (because we've included the Babel polyfill).value-keyword-case now ignores custom idents of properties animation-name, counter-increment, font-family, grid-row, grid-column, grid-area, list-style-type.always-multi-line in rule block-opening-brace-newline-before documentation.Fixed: block-closing-brace-newline-before no longer delivers false positives for extra semicolon.
block-closing-brace-newline-before no longer delivers false positives for extra semicolon.declaration-block-no-ignored-properties now detects use of vertical-align with block-level elements.font-family-name-quotes is now case insensitive when hunting for font-family properties.number-zero-length-no-unit now ignores deg, grad, turn and rad units.selector-no-type does a better job when ignoring descendant and compound selectors.Fixed: shorthand-property-no-redundant-values now handles uppercase values properly.
shorthand-property-no-redundant-values now handles uppercase values properly.Fixed: declaration-block-no-ignored-properties now longer crashes on nested rules.
declaration-block-no-ignored-properties now longer crashes on nested rules.Deprecated: support for plugin rule names that aren't namespaced i.e. only your-namespace/your-rule-name rule names are supported. If your plugin prov…
your-namespace/your-rule-name rule names are supported. If your plugin provides only a single rule or you can't think of a good namespace, you can simply use plugin/my-rule).--stdin-filename option to CLI.at-rule-name-space-after rule.no-extra-semicolons rule.selector-attribute-operator-space-after rule.selector-attribute-operator-space-before rule.selector-max-empty-lines rule.selector-pseudo-element-no-unknown rule.at-rule-semicolon-newline-after, block-opening-brace-newline-after, and declaration-block-semicolon-newline-after.function-comma-newline-after now allows end-of-line comments.function-url-quotes now ignores spaces within url().no-descending-specificity now ignores trailing colons within selectors.no-indistinguishable-colors now ignores keyword color names within url().number-max-precision now ignores @import at-rules and url() functions.selector-class-pattern and selector-id-pattern rules now ignore SCSS variable interpolation.value-list-comma-* rules now ignore SCSS maps.Deprecated: stylelint.utils.cssWordIsVariable() as non-standard syntax utils are now defensive.
stylelint.utils.cssWordIsVariable() as non-standard syntax utils are now defensive.declaration-colon-* rules now ignore SCSS lists.rule-nested-empty-line-before now ignores Less blockless rules (mixin and extend calls).stylelint.utils.cssWordIsVariable() as non-standard syntax utils are now defensive.declaration-colon-* rules now ignore SCSS lists.font-weight-notation now ignores SCSS interpolation.rule-nested-empty-line-before now ignores Less blockless rules (mixin and extend calls).Fixed: more problems with exposed stylelint.createRuleTester.
Added: selector-no-qualifying-type rule.
selector-no-qualifying-type rule.number-leading-zero will not check @import at-rules.selector-class-pattern now ignores non-ouputting Less mixin definitions and called Less mixins.value-keyword-case now accounts for camelCase keywords (e.g. optimizeSpeed, optimizeLegibility and geometricPrecision) when the lower option is used.testUtils and stylelint.createRuleTester module mistakes.Fixed: documentation links to selector-pseudo-class-parentheses-space-inside and selector-attribute-brackets-space-inside.
selector-pseudo-class-parentheses-space-inside and selector-attribute-brackets-space-inside.Added: comment-word-blacklist rule.
comment-word-blacklist rule.selector-attribute-brackets-space-inside rule.selector-pseudo-class-parentheses-space-inside rule.shorthand-property-no-redundant-values rule.ignoreKeywords option for value-keyword-case..stylelintignore file.\r\n) warning positioning in string-no-newline.///-SassDoc-style comments.max-empty-lines places warning at the end of the violating newlines to avoid positioning confusions.Fixed: CRLF (\r\n) warning positioning in max-empty-lines and function-max-empty-lines.
\r\n) warning positioning in max-empty-lines and function-max-empty-lines.Fixed: CssSyntaxError sets errored on output to true.
CssSyntaxError sets errored on output to true.Fixed: function-name-case now accounts for camelCase function names (e.g. translateX, scaleX etc) when the lower option is used.
function-name-case now accounts for camelCase function names (e.g. translateX, scaleX etc) when the lower option is used.Changed: CssSyntaxError is no longer thrown but reported alongside warnings.
CssSyntaxError is no longer thrown but reported alongside warnings.indentInsideParens option to indentation.indentClosingBrace option to indentation.consecutive-duplicates option for declaration-block-no-duplicate-properties rule.unit-case rule.stylelint.utils.cssWordIsVariable().property-case rule.function-name-case rule.selector-pseudo-element-case rule.value-keyword-case rule.selector-pseudo-class-case rule.at-rule-name-case rule.block-no-empty no longer delivers false positives for less syntax.declaration-block-trailing-semicolon better understands nested at-rules.number-zero-length-no-unit now work with q unit and ignores s, ms, kHz, Hz, dpcm, dppx, dpi unitsFixed: no-descending-specificity no longer gets confused when the last part of a selector is a compound selector.
unit-no-unknown rule.no-descending-specificity no longer gets confused when the last part of a selector is a compound selector.indentation to complain about Sass maps.declaration-block-no-ignored-properties now ignore clear for position: absolute and position: relative and does not ignore float on display: table-*.Added: (experimental) support for Less syntax.
stylelint.createRuleTester().function-max-empty-lines rule.declaration-block-no-ignored-properties rule.function-url-data-uris rule.block-closing-brace-newline-after use of "single space", rather than "newline", in its messages.function-comma-space-after, function-comma-space-before, function-parentheses-newline-inside and function-parentheses-space-inside now ignore SCSS maps.property-value-blacklist and -whitelist no longer error on properties without a corresponding list entry.font-weight-notation now ignores initial value.selector-id-pattern now ignores selectors with Sass interpolation.selector-class-pattern now ignores selectors with Sass interpolation.no-unknown-animations now ignores none, initial, inherit, unset values.max-line-length options validation.function-calc-no-unspaced-operator accepts newlines.block-closing-brace-newline-after accepts single-line comments immediately after the closing brace.selector-no-id now ignores keyframe selectors.unit-blacklist and unit-whitelist now ignores url functions.function-* rules should all now ignore all Sass maps and lists.Fixed: no-descending-specificity no longer delivers false positives after second run in Atom linter.
no-descending-specificity no longer delivers false positives after second run in Atom linter.stylelint-disable-rule imported correctly.function-calc-no-unspaced-operator now better ignores non-calc functions.Added: no-indistinguishable-colors rule.
no-indistinguishable-colors rule.at-rule-semicolon-newline-after rule.stylelint-disable-reason rule.no-duplicate-selectors contextualizes selectors by all at-rules, not just media queries.declaration-bang-space-* understands arbitrary bang declarations (e.g. !default).font-weight-notation now ignore inherit value.selector-list-comma-* rules no longer deliver false positives inside functional notation.indentation treats @nest at-rules like regular rules with selectors.number-no-trailing-zeros no longer delivers false positives in url() arguments.no-duplicate-selectors no longer delivers false positives with descendant combinators.root-no-standard-properties no longer delivers false positives inside the :not() pseudo-selector.no-duplicate-selectors no longer delivers false positives after second run in Atom linter.Added: selector-type-case rule.
selector-type-case rule.Fixed: string-no-newline no longer stumbles when there are comment-starting characters inside strings.
string-no-newline no longer stumbles when there are comment-starting characters inside strings.Removed: no-indistinguishable-colors because its dependencies were unusable in Atom. (To be re-evaluated and re-added later.)
no-indistinguishable-colors because its dependencies were unusable in Atom. (To be re-evaluated and re-added later.)"warn": true secondary option. Use "severity": "warning", instead.color-no-named rule. Use the new color-named rule, with the "never" option instead.declaration-block-no-single-line rule. Use the new block-no-single-line rule instead.rule-no-duplicate-properties rule. Use the new declaration-block-no-duplicate-properties rule instead.rule-no-shorthand-property-overrides rule. Use the new declaration-block-no-shorthand-property-overrides rule instead.rule-properties-order rule. Use the new declaration-block-properties-order rule instead.rule-trailing-semicolon rule. Use the new declaration-block-trailing-semicolon rule instead.true option for emptyLineBefore when using property groups in rule-properties-order. Use the new "always" or "never" option instead."always" option for font-weight-notation. Use the new always-where-possible option instead.stylelint-disable commands.max-nesting-depth does not warn about blockless at-rules.function-comma-newline-after and related rules consider input to be multi-line (applying to "always-multi-line", etc.) when the newlines are at the beginning or end of the input.no-indistinguishable-colors no longer errors on color functions containing spaces e.g. rgb(0, 0, 0) -- but also removed the rule (see above).declaration-block-properties-order no longer fails when an unspecified property comes before or after a specified property in a group with emptyLineBefore: true.indentation no longer has false positives when there are empty lines within multi-line values.declaration-colon-*-after no longer fail to do their job when you want a space or newline after the colon and instead there is no space at all.Fixed: no-unsupported-browser-features options now optional.
no-unsupported-browser-features options now optional.no-duplicate-selectors now ignores keyframe selectors.Deprecated: "warn": true secondary option. Use "severity": "warning", instead.
"warn": true secondary option. Use "severity": "warning", instead.color-no-named rule. Use the new color-named rule, with the "never" option instead.declaration-block-no-single-line rule. Use the new block-no-single-line rule instead.rule-no-duplicate-properties rule. Use the new declaration-block-no-duplicate-properties rule instead.rule-no-shorthand-property-overrides rule. Use the new declaration-block-no-shorthand-property-overrides rule instead.rule-properties-order rule. Use the new declaration-block-properties-order rule instead.rule-trailing-semicolon rule. Use the new declaration-block-trailing-semicolon rule instead.true option for emptyLineBefore when using property groups in rule-properties-order. Use the new "always" or "never" option instead."always" option for font-weight-notation. Use the new always-where-possible option instead.severity secondary option as a replacement for "warn": true to alter a rule's severity.block-no-single-line rule.color-named rule.declaration-block-no-duplicate-properties rule.declaration-block-no-shorthand-property-overrides rule.declaration-block-properties-order rule.declaration-block-trailing-semicolon rule.max-nesting-depth rule.no-browser-hacks rule.no-descending-specificity rule.no-indistinguishable-colors rule.no-unsupported-browser-features rule.selector-max-specificity rule.string-no-newline rule."always" and "never" option to rule-properties-order emptyLineBefore when using property groupsnamed-where-possible option to font-weight-notation.unspecified: "bottomAlphabetical" option to the rule-properties-order rule.ignoreAtRules: [] option to the block-opening-brace-space-before and block-closing-brace-newline-after rules.&) as a prefix in selector-no-type.stylelint-disable-line feature.withinComments, withinStrings, and checkStrings options to styleSearch, and insideString property to the styleSearch match object.resolveNestedSelectors option to the selector-class-pattern rule.stylelint-disable is misused.selector-no-vendor-prefix no longer delivers two warnings on vendor-prefixed pseudo-elements with two colons, e.g. ::-moz-placeholder.no-duplicate-selectors rule now resolves nested selectors.font-weight-notation does not throw false warnings when normal is used in certain ways.selector-no-* and selector-*-pattern rules now ignore custom property sets.no-duplicate-selectors.selector-no-id does not warn about Sass interpolation inside an :nth-child() argument.rule-nested-empty-line-before, rule-non-nested-empty-line-before, comment-empty-line-before and at-rule-empty-line-before.number-leading-zero, function-comma-space-*, and declaration-colon-* do not throw false positives in url() arguments.Added: ignore: "relative" option for font-weight-notation.
ignore: "relative" option for font-weight-notation.declaration-colon-space/newline-before/after rules now ignore scss maps.selector-list-comma-newline-after allows // comments after the comma.Fixed: removed console.log()s in property-unit-whitelist.
console.log()s in property-unit-whitelist.Fixed: removed console.log()s in rule-properties-order.
console.log()s in rule-properties-order.Fixed: option normalization for rules with primary options that are arrays of objects, like rule-properties-order.
rule-properties-order.// comments when using SCSS parser.no-unknown-animations ignores variables.no-unknown-animations does not erroneously flag functions like steps() and cubic-bezier().time-no-imperceptible.font-family-name-quotes and font-weight-notation ignore variables.media-feature-no-missing-punctuation handles space-padded media features.--config relatives paths that don't start with ./ to be rejected.Fixed: again removed stylelint.utils.ruleTester because its dependencies broke things.
stylelint.utils.ruleTester because its dependencies broke things.Fixed: move tape to dependencies to support testUtils.
tape to dependencies to support testUtils.Fixed: include testUtils in npm package whitelist.
testUtils in npm package whitelist.Added: font-family-name-quotes rule.
font-family-name-quotes rule.font-weight-notation rule.media-feature-no-missing-punctuation rule.no-duplicate-selectors rule.no-invalid-double-slash-comments rule.no-unknown-animations rule.property-value-blacklist rule.property-value-whitelist rule.time-no-imperceptible rule.ignore: "descendant" and ignore: "compounded" options for selector-no-type.property-blacklist, property-unit-blacklist, property-unit-whitelist, property-value-blacklist, and property-whitelist.property-unit-blacklist and property-unit-whitelist, e.g. if you enter animation it now also checks -webkit-animation.--config argument, not just paths.codeFilename option to Node API.stylelint.rules to make stylelint even more extensible.stylelint-rule-tester into this repo, and exposed it at stylelint.utils.ruleTester.rule-properties-order empty line detection when the two newlines were separated
by some other whitespace."alphabetical" primary option
with rule-properties-order.ignoreFiles handling of absolute paths.ignoreFiles uses the configBasedir option to interpret relative paths.Added: support for custom messages with a message secondary property on any rule.
message secondary property on any rule.node_modules and bower_components directories.--config argument.indentation to stumble over declarations with semicolons on their own lines.Added: helpful option validation message when object is expected but non-object provided.
selector-no-id no longer warns about Sass interpolation when multiple interpolations are used in a selector.Removed: support for legacy numbered severities.
.stylelintrc files (by upgrading cosmiconfig).ignore: "non-comments" option to max-line-length.function-whitespace-after does not expect space between ) and }, so it handles Sass interpolation better.Fixed: selector-no-vendor-prefix now handles custom-property-sets.
selector-no-vendor-prefix now handles custom-property-sets.Fixed: selector-no-type ignores nth-child pseudo-classes and @keyframes selectors.
selector-no-type ignores nth-child pseudo-classes and @keyframes selectors.Your coding agent can read these notes before it upgrades. Set up the MCP server →