All notable changes to this project are documented in this file.
max-warnings
option (#5267).no-invalid-position-at-import-rule
false positives for dollar variables (#5264).no-invalid-position-at-import-rule
rule (#5202).no-irregular-whitespace
rule (#5209).selector-disallowed-list
rule (#5239).selector-attribute-quotes
autofix (#5248).ignore: ["inside-function"]
to declaration-property-unit-allowed-list
(#5194).color-no-hex
false positives for CSS-in-JS objection notation (#5186).font-family-no-missing-generic-family-keyword
false positives for variables (#5240).length-zero-no-unit
autofix removing trailing zeroes (#5256).length-zero-no-unit
false positives for level 4 math functions (#5203).length-zero-no-unit
false positives for functions inside of math functions (#5245).named-grid-areas-no-invalid
rule (#5167).ignore: ["single-declaration"]
to declaration-block-trailing-semicolon
(#5165).*-no-unknown
false positives (#5158).selector-pseudo-class-no-unknown
false positives for :autofill
(#5171).report*
configuration object properties (#5143).ignoreDisables
, reportNeedlessDisables
, reportInvalidScopeDisables
and reportDescriptionlessDisables
configuration object properties (#5126).declaration-block-no-duplicate-custom-properties
rule (#5125).alpha-value-notation
false negatives for CSS Variables (#5130).--report
options (#5079).color-hex-case
false negatives for css-in-js object notation (#5101).color-hex-length
false negatives for css-in-js object notation (#5106).selector-attribute-name-disallowed-list
false positives for valueless attribute selectors (#5060).StylelintStandaloneReturnValue.reportedDisables
, .descriptionlessDisables
, .needlessDisables
, and .invalidScopeDisables
. .reportedDisables
will always be empty and the other properties will always be undefined, since these errors now show up in .results
instead (#4973).comment-pattern
rule (#4962).selector-attribute-name-disallowed-list
rule (#4992).ignoreAtRules[]
to property-no-unknown
(#4965).*-notation
false negatives for dollar variables (#5031).*-pattern
missing configured pattern in violation messages (#4975).*-blacklist
, *-requirelist
and *-whitelist
rules in favour of the new *-disallowed-list
, *-required-list
and *-allowed-list
ones (#4845):
at-rule-blacklist
. Use at-rule-disallowed-list
instead.at-rule-property-requirelist
. Use at-rule-property-required-list
instead.at-rule-whitelist
. Use at-rule-allowed-list
instead.comment-word-blacklist
. Use comment-word-disallowed-list
instead.declaration-property-unit-blacklist
. Use declaration-property-unit-disallowed-list
instead.declaration-property-unit-whitelist
. Use declaration-property-unit-allowed-list
instead.declaration-property-value-blacklist
. Use declaration-property-value-disallowed-list
instead.declaration-property-value-whitelist
. Use declaration-property-value-allowed-list
instead.function-blacklist
. Use function-disallowed-list
instead.function-url-scheme-blacklist
. Use function-url-scheme-disallowed-list
instead.function-url-scheme-whitelist
. Use function-url-scheme-allowed-list
instead.function-whitelist
. Use function-allowed-list
instead.media-feature-name-blacklist
. Use media-feature-name-disallowed-list
instead.media-feature-name-value-whitelist
. Use media-feature-name-value-allowed-list
instead.media-feature-name-whitelist
. Use media-feature-name-allowed-list
instead.property-blacklist
. Use property-disallowed-list
instead.property-whitelist
. Use property-allowed-list
instead.selector-attribute-operator-blacklist
. Use selector-attribute-operator-disallowed-list
instead.selector-attribute-operator-whitelist
. Use selector-attribute-operator-allowed-list
instead.selector-combinator-blacklist
. Use selector-combinator-disallowed-list
instead.selector-combinator-whitelist
. Use selector-combinator-allowed-list
instead.selector-pseudo-class-blacklist
. Use selector-pseudo-class-disallowed-list
instead.selector-pseudo-class-whitelist
. Use selector-pseudo-class-allowed-list
instead.selector-pseudo-element-blacklist
. Use selector-pseudo-element-disallowed-list
instead.selector-pseudo-element-whitelist
. Use selector-pseudo-element-allowed-list
instead.unit-blacklist
. Use unit-disallowed-list
instead.unit-whitelist
. Use unit-allowed-list
instead.customSyntax
option (#4839).*.cjs
config files (#4905).reportDescriptionlessDisables
flag (#4907).reportDisables
secondary option (#4897).*-no-vendor-prefix
autofix (#4859).ignoreComments[]
to comment-empty-line-before
(#4841).ignoreContextFunctionalPseudoClasses
to selector-max-id
(#4835).selector-max-*
(except selector-max-type
) false negatives for where
, is
, nth-child
and nth-last-child
(#4842).length-zero-no-unit
TypeError for custom properties fallback (#4860).selector-combinator-space-after
false positives for trailing combinator (#4878).max-empty-lines
TypeError from inline comment with autofix and sugarss syntax (#4821).property-no-unknown
false positives for namespaced variables (#4803).selector-type-no-unknown
false positives for idents within ::part
pseudo-elements (#4828).ignoreSelectors[]
to block-opening-brace-space-before
(#4640).--report-invalid-scope-disables
(#4784).stderr
(#4799).package.json
’s engine
field (#4790).alpha-value-notation
number precision errors (#4802).font-family-no-missing-generic-family-keyword
false positives for variables (#4806).no-duplicate-selectors
false positives for universal selector and disallowInList
(#4809).alpha-value-notation
rule (#4770).color-function-notation
rule (#4760).hue-degree-notation
rule (#4769).time-min-milliseconds
TypeError for ignore: ["delay"]
and shorthand animation (#4783).ignore:["delay"]
to time-min-milliseconds
(#4743).ignoreFunctions: []
to value-keyword-case
(#4733).--report-needless-disables
respects stylelint-disable commands (#4714).at-rule-property-requirelist
TypeError for comments inside of font-face (#4744).declaration-block-trailing-semicolon
false positives for CSS-in-JS object notation (#4749).declaration-empty-line-before
false positives for inlines styles (#4726).media-feature-name-*
false positives for forced-colors
(#4775).value-keyword-case
false positives WebExtension replacement keywords (#4778).value-keyword-case
false positives regression for mixed-case properties and the ignoreProperties
option (#4748).13.2.0
(#4705).ignoreFontFamilies: []
to font-family-no-missing-generic-family-keyword
(#4656).function-calc-no-invalid
false positives for SCSS and Less variables (#4659).unit-no-unknown
false positives for x
unit within vendor-prefixed image-set
(#4654).selector-pseudo-element-no-unknown
false positives for ::part
pseudo-element (#4604).value-keyword-case
false positives for longhand grid-column/row-*
properties (#4611).postcss-selector-parser@6
due to a vulnerability in one of postcss-selector-parser@3
dependencies (#4595). Due to this update:
selector-descendant-combinator-no-non-space
will ignore selectors containing commentsselector-pseudo-class-parentheses-space-inside
can’t autofix pseudo-classes that contain comments--stdin
CLI flag that accepts stdin input even if it is empty (#4594).media-feature-name-*
false negatives for range context (#4581).indentation
RangeError regression (#4572).string-quotes
attribute selector autofix (#4576).globby
was updated to v10. Now only forward-slashes (/
) should be used as directory separator in globs. Refer to glob pattern syntax. Most of the users wouldn’t need to change anything, but Windows users might need to update their globs. (#4254).unit-no-unknown
support for x
unit (#4427).--report-invalid-scope-disables
crash when no rules specified (#4498).media-feature-parentheses-space-inside
false negatives for multiple spaces (#4513).selector-type-no-unknown
false positives for SVG tags (#4495).unit-no-unknown
false positives for Sass map keys (#4450).value-list-comma-newline-after
false positives for shared-line comments (#4482).string-no-newline
memory leak for ERB templates (#4491).bower_components
folder by default (#4384).createRuleTester
API (#4385).comment-empty-line-before
false positives for selector lists and shared-line comments (#4360).font-family-no-missing-generic-family-keyword
false positives for Sass-variables with namespaces (#4378).font-weight-notation
false positives for font-weight
ranges in @font-face
(#4372).length-zero-no-unit
false positives for line-height
, and for fr
units (#4394).length-zero-no-unit
false positives for Less variables (#4405).selector-max-*
false negatives for rules with nested rules (#4357).--syntax css
(#4335).css
syntax option (#4315).no-eol-whitespace
parsing problems for non-standard syntaxes (#4313).selector-pseudo-class-no-unknown
false positives for :is
selector (#4321).--report-needless-disables
CLI flag now reports needless disables and runs linting (#4151).stylelintError
as a boolean (#4174).createRuleTester
API (#4279).--reportInvalidScopeDisables
CLI flag (#4181).unicode-bom
rule (#4225).max-empty-lines
autofix (#3667).selector-pseudo-element-case
autofix (#3672).selector-*
support for all logical combinations (:matches
, :has
) (#4179).ignore: ["selectors-within-list"]
to no-descending-specificity
(#4176).ignoreSelectors: []
to property-no-unknown
(#4275).*-max-empty-lines
to only report one violation per function, selector, value list (#4260).block-no-empty
crash for @import
statements (#4110).indentation
false positives for <style>
tag with multiline attributes (#4177).length-zero-no-unit
false positives for inside calc function (#4175).max-line-length
false positives for multi-line url()
(#4169).no-duplicate-selectors
false positives for selectors in the same selector list (#4173).no-unit-unknown
false positives for at-variables (Less) starting with numbers (#4163).property-no-unknown
for overflowX
for CSS-in-JS (#4184).selector-max-empty-lines
autofix (#3717).--report-needless-disables
output (#4071).--output-file
CLI flag (#4085).function-calc-no-invalid
false positives for interpolation (#4046).declaration-block-semicolon-space-before
autofix with !important
annotations (#4016).no-eol-whitespace
autofix for within comments (#4224).no-eol-whitespace
false negatives for last line without trailing EOL (#4224).selector-pseudo-class-no-unknown
false positives for defined
(#4081).--allow-empty-input
CLI flag (#4029).color-no-invalid-hex
false positives for hashes in URLs (#4035).function-linear-gradient-no-nonstandard-direction
false positives for dollar variables (#4027).styled
and jsx
syntax options that were replaced with css-in-js
in v9.10.0 (#4007).--allow-empty-input
flag for the old behaviour (#3965).lib/rules/index.js
(#3923).at-rule-property-requirelist
rule (#3997).disallowInList
to no-duplicate-selectors
(#3936).ignore: ["comments"]
to block-no-empty
(#4008).color-no-invalid-hex
false negatives for CSS-in-JS (#3957).feature-name-no-unknown
false positives for prefers-color-scheme
(#3951).function-calc-no-invalid
false positives for negative numbers (#3921).no-descending-specificity
false positives for vendor prefixed pseudo-elements (#3929).selector-max-*
false negatives for nested at-rules (#3959).selector-max-universal
are now evaluated separately (#4263).value-keyword-case
autofix for single-line comments within maps (#4019).css-in-js
syntax option that will replace the existing styled
and jsx
ones (#3872).function-calc-no-invalid
rule (#3833).ignore: ["next-sibling"]
to selector-max-type
(#3832).declaration-block-semicolon-space-after
autofix (#3865).CssSyntaxError
for functions in template literals (#3869).no-descending-specificity
false positives for styled-components (#3875).no-duplicate-selectors
false positives for styled-components (#3875).selector-pseudo-class-no-unknown
false positives for focus-visible
(#3887).selector-max-universal
false positives for flush comments containing a comma (#3817).shorthand-property-redundant-values
false positives for negative values (#3888).selector-list-comma-newline-after
autofix (#3815).value-list-max-empty-lines
autofix (#3814).ignoreSelectors: []
to selector-no-vendor-prefix
(#3748).&:extend
for Less syntax (#3824).--report-needless-disables
CLI flag (#3819).font-family-no-missing-generic-family-keyword
false positives for system fonts (#3794).value-keyword-case
autofix (#3775).ignore: ["pseudo-classes"]
to max-nesting-depth
(#3724).ignoreTypes:[]
to selector-type-case
(#3758).ignoreFunctions:[]
to unit-no-unkown
(#3736).at-rule-*
false positives for Less variables and mixins (#3767).max-empty-lines
false positives for final newlines (#3785).at-rule-*
false positives for Less variables and mixins (#3759).media-feature-parentheses-space-inside
autofix (#3720).selector-descendant-combinator-no-non-space
autofix (#3565).unit-case
autofix (#3725).max-empty-lines
false positives for empty lines before </style>
(#3708).selector-max-specificity
false positives for functional psuedo-classes (#3711).no-empty-first-line
rule (#3650).at-rule-name-space-after
autofix (#3653).block-closing-brace-empty-line-before
autofix (#3598).block-closing-brace-space-before
autofix (#3673).comment-whitespace-inside
autofix (#3619).declaration-bang-space-after
autofix (#3598).declaration-bang-space-before
autofix (#3592).declaration-colon-newline-after
autofix (#3588).function-comma-space-after
autofix (#3555).function-comma-space-before
autofix (#3596).function-name-case
autofix (#3674).function-max-empty-lines
autofix (#3645).function-parentheses-newline-inside
autofix (#3601).function-whitespace-after
autofix (#3648).media-feature-colon-space-after
autofix (#3623).media-feature-colon-space-before
autofix (#3637).media-feature-name-case
autofix (#3685).media-feature-range-operator-space-after
autofix (#3639).media-feature-range-operator-space-before
autofix (#3618).media-query-list-comma-newline-after
autofix (#3643).media-query-list-comma-space-after
autofix (#3607).media-query-list-comma-space-before
autofix (#3640).function-parentheses-space-inside
autofix (#3563).selector-attribute-brackets-space-inside
autofix (#3605).selector-attribute-operator-space-after
autofix (#3641).selector-attribute-operator-space-before
autofix (#3603).selector-pseudo-class-case
autofix (#3671).selector-pseudo-class-parentheses-space-inside
autofix (#3646).selector-type-case
autofix (#3668).no-eol-whitespace
autofix (#3615).no-extra-semicolons
autofix (#3574).value-list-comma-newline-after
autofix (#3616).value-list-comma-space-after
autofix (#3558).value-list-comma-space-before
autofix (#3597).baseIndentLevel
to indentation
(#3557).linebreaks
TypeError (#3636).max-empty-lines
incorrect line reporting (#3530).media-query-list-comma-newline-after
false positives for trailing comment (#3657).no-descending-specificity
false positives for CSS Modules functional pseudo-classes (#3623).--print-config
CLI flag (#3532).block-closing-brace-newline-before
autofix (#3442).block-opening-brace-newline-before
autofix (#3518).block-opening-brace-space-after
autofix (#3520).block-opening-brace-newline-after
autofix (#3441).declaration-block-semicolon-newline-after
autofix (#3545).declaration-block-semicolon-space-before
autofix (#3554).declaration-colon-space-after
autofix (#3538).selector-list-comma-newline-before
autofix (#3517).selector-list-comma-space-after
autofix (#3490).unix
formatter (#3524).selector-descendant-combinator-no-non-space
false positives for calculations with parenthesis (#3508).linebreaks
rule (#3289).compact
formatter (#3488).at-rule-semicolon-newline-after
autofix (#3450).block-closing-brace-newline-after
autofix (#3443).block-opening-brace-space-before
autofix (#3438).declaration-block-trailing-semicolon
autofix (#3382).declaration-colon-space-before
autofix (#3445).property-case
autofix (#3448).selector-combinator-space-after
autofix (#3446).selector-combinator-space-before
autofix (#3457).selector-list-comma-space-before
autofix (#3447).block-opening-brace-newline-after
false positives for nested rule-sets prefixed with comments (#3383).declaration-block-trailing-semicolon
report of errors with the --fix
option (#3493).font-family-name-quotes
false positives for system-ui
system font (#3463).keyframes-name-pattern
support for raw JS RegExp (#3437).media-feature-name-no-unknown
false positives for level 5 names (#3397).no-descending-specificity
false positives for #{&} (#3420).no-missing-end-of-source-newline
false positives for style attributes (#3485).<style>
tags and style=""
attributes in XML and XSLT files (#3386).globbyOptions
option (#3339).keyframes-name-pattern
rule (#3321).media-feature-name-value-whitelist
rule (#3320).selector-pseudo-element-colon-notation
autofix (#3345)..vue
files throwing errors for <style lang="stylus">
and <style lang="postcss">
(#3331).declaration-block-no-*
false positives for non-standard syntax (#3381).function-whitespace-after
false positives for “/” (#3132).length-zero-no-unit
incorrect autofix for at-includes (#3347).max-nesting-depth
false positives for nested properties (#3349).no-empty-source
false positives on vue external sources <style src="*">
tag (#3331).max-line-length
false positives for non-CSS blocks (#3367).no-eol-whitespace
false positives for non-CSS blocks (#3367).no-extra-semicolons
false positives for non-CSS blocks (#3367).no-missing-end-of-source-newline
false positives for non-CSS blocks (#3367).cache
option hiding CssSyntaxError outputs (#3258).no-descending-specificity
false positives for Sass nested properties (#3283).selector-pseudo-class-no-unknown
false positives proprietary webkit pseudo classes when applied to a simple selector (#3271).selector-max-pseudo-class
rule (#3195).require('stylelint')
time (#3242).indentation
false positives for at-root (#3225).max-empty-lines
false positives for non-CSS blocks (#3229).no-empty-source
false positives for non-CSS blocks (#3240).string-no-newline
false positives for non-CSS blocks (#3228).signal-exit
dependency (#3186).ignore: ["first-nested"]
to at-rule-empty-line-before
(#3179).ignore: ["first-nested"]
to rule-empty-line-before
(#3179).--max-warnings
CLI flag (#2942).selector-combinator-*list
rules (#3088).selector-pseudo-element-*list
rules (#3104).ignore: ["first-nested"]
to custom-property-empty-line-before
(#3104).ignore: ["first-nested"]
to declaration-empty-line-before
(#3103).ignoreProperties: []
to property-no-vendor-prefix
(#3089).font-family-name-quotes
unicode range increased (#2974).selector-max-id
in nested at-statements (#3113).except: ["after-closing-brace"]
to block-closing-brace-empty-line-before
(#3011).postcss-sass
(#3040).*.pcss
files (#3064).font-family-no-missing-generic-family-keyword
configuration (#3039).indentation
autofix for HTML (#3044).font-family-no-missing-generic-family-keyword
false positives for at-font-face (#3034).<style>
tags and markdown fences in .vue
and .html
files (#2975).font-family-no-missing-generic-family-keyword
rule (#2930).no-duplicate-at-import-rules
rule (#2963).number-leading-zero
autofix (#2921).number-no-trailing-zeros
autofix (#2947).shorthand-property-no-redundant-values
autofix (#2956).string-quotes
autofix (#2959).ignore: ["custom-properties"]
option to length-zero-no-unit
(#2967).except: ["inside-block"]
option to rule-empty-line-before
(#2982).ignoreValues
to value-no-vendor-prefix
(#3015).ignoreMediaFeatureNames
to unit-blacklist
(#3027).comment-empty-line-before
false positives for shared-line comments (#2986).unit-*
false positives for spaceless multiplication (#2948).length-zero-no-unit
autofix (#2861).selector-max-specificity
support for level 4 evaluation context pseudo-classes (#2857).ignoreUnits
option to number-max-precision
(#2941).ignoreSelectors
option to selector-max-specificity
(#2857).ignoreProperties
option to value-keyword-case
(#2937).*-empty-line-before
false negatives and positives when two or more except: [*]
options were triggered (#2920).*-empty-line-before
false positives for CSS in HTML (#2854).rule-empty-line-before
false positives for ignore: ["inside-block"]
and CSS in HTML (#2894).rule-empty-line-before
false positives for except: ["after-single-line-comment"]
and preceding shared-line comments (#2920).selector-list-comma-newline-after
false positives for shared-line comments separated by more than once space (#2915).selector-pseudo-class-no-unknown
false positives when using chained pseudo-classes (#2810).string-quotes
false positives for @charset
and single quotes (#2902).unit-no-unknown
false positives for spaceless multiplication and division in calc()
functions (#2848).--ignore-pattern
in CLI (#2851).codeFilename
to createStylelintResult
for raw code linting standalone API (#2450).ignorePattern
option (--ignore-pattern
in CLI), to allow patterns of files to ignored (#2834).--fix
CLI parameter or fix: true
Node.js API options property. Newly supported rules:
*-empty-line-before
false positives shared-line comments and "first-nested"
option (#2827).color-hex-length
false positives for ID references in url
functions (#2806).indentation
false positives for Less parametric mixins with rule block/snippet (#2744).no-empty-source
compatability with postcss-html
custom syntax (#2798).no-extra-semicolons
false negatives where instances were not detected when followed by multiple comments (#2678).selector-max-specificity
cannot parse selector violation for Less mixins (#2677).This release is accompanied by:
~
) in package.json
is now recommended, e.g. "stylelint": "~8.0.0"
, to guarantee the results of your builds (#1865).stylelint-config-recommended
. This config only turns on the possible error rules. stylelint-config-standard
now builds on top of the recommended config by turning on over 60 additional stylistic rules.Changes:
7.8.0
& 7.12.0
(#2422 & #2693).
block-no-single-line
.custom-property-no-outside-root
declaration-block-no-ignored-properties
.declaration-block-properties-order
.function-url-data-uris
.media-feature-no-missing-punctuation
.no-browser-hacks
.no-indistinguishable-colors
.no-unsupported-browser-features
.root-no-standard-properties
rule-nested-empty-line-before
.rule-non-nested-empty-line-before
.selector-no-attribute
.selector-no-combinator
.selector-no-empty
.selector-no-id
.selector-no-type
.selector-no-universal
.selector-root-no-composition
.stylelint-disable-reason
.time-no-imperceptible
.7.8.0
(#2433).
"all-nested"
option for at-rule-empty-line-before
."blockless-group"
option for at-rule-empty-line-before
."between-comments"
option for comment-empty-line-before
."at-rules-without-declaration-blocks"
option for max-nesting-depth
.postcss
from @5
to @6
(#2561).report-needless-disables
now exits with non-zero code (#2341).*-blacklist
and *-whitelist
(and ignore* []
secondary options) are now case sensitive. Use regular expressions with the i
flag for case insensitivity (#2709).*-empty-line-before
now correctly handle shared-line comments (#2262).*-empty-line-before
now consider line as empty if it contains whitespace only (#2440).function-linear-gradient-no-nonstandard-direction
now checks all linear-gradients in a value list (#2496).selector-max-compound-selectors
now checks all resolved selectors, rather than just the deepest (#2350).disableDefaultIgnores
option (--disable-default-ignores
in CLI), to allow linting of node_modules
and bower_components
directories (#2464)..stylelintignore
(#2464).ignore: ["child"]
option to selector-max-type
(#2701).declaration-block-no-redundant-longhand-properties
and declaration-block-no-shorthand-property-overrides
understand more shorthand properties (#2354).selector-max-type
no longer produces false negatives for when child, next-sibling and following-sibling combinators are used with ignore: ["descendant"]
(#2701).ignoreAttributes
option to selector-max-attribute
(#2722).selector-combinator-space-*
false positives for CSS namespaced type selectors (#2715).selector-max-specificity
now ignores nested non-standard selectors (#2685).function-url-data-uris
rule. Use either function-url-scheme-blacklist
or function-url-scheme-whitelist
.selector-no-attribute
rule. Use selector-max-attribute
with 0
as its primary option.selector-no-combinator
rule. Use selector-max-combinators
with 0
as its primary option.selector-no-id
rule. Use selector-max-id
with 0
as its primary option.selector-no-type
rule. Use selector-max-type
with 0
as its primary option.selector-no-universal
rule. Use selector-max-universal
with 0
as its primary option.function-url-scheme-blacklist
rule (#2626).function-url-scheme-whitelist
regex support (#2662).selector-max-attribute
rule (#2628).selector-max-combinators
rule (#2658).selector-max-id
rule (#2654).selector-max-type
rule (#2665).selector-max-universal
rule (#2653).--fix
no longer crashes when used with ignored files (#2652).max-*
rules now use singular and plural nouns in their messages (#2663).media-feature-name-*list
now accept arrays for their primary options (#2632).selector-*
now ignore custom property sets (#2634).selector-pseudo-class-no-unknown
now ignores Less :extend
(#2625).--fix
CLI parameter or fix: true
Node.js API options property. Supported rules:
at-rule-empty-line-before
at-rule-name-case
color-hex-case
comment-empty-line-before
custom-property-empty-line-before
declaration-empty-line-before
indentation
rule-empty-line-before
selector-max-class
rule.ignore: ["custom-elements"]
option to selector-type-no-unknown
(#2366).cache
enabled (#2494).:extend
is now ignored (#2571).function-parentheses-space-inside
now ignores functions without parameters (#2587).length-zero-no-unit
now correctly handles newlines and no spaces after colon (#2477).selector-descendant-combinator-no-non-space
and selector-combinator-space-before/after
now understand and check >>>
shadow-piercing combinator (#2509).selector-descendant-combinator-no-non-space
now ignores Less guards (#2557).selector-pseudo-class-no-unknown
now checks @page
at-rules and supports @page
pseudo-classes (#2445).selector-pseudo-class-no-unknown
now considers focus-ring
, playing
and paused
to be known (#2507).selector-type-no-unknown
now ignores MathML tags (#2478).selector-type-no-unknown
now ignores the /deep/
shadow-piercing combinator (#2508).value-keyword-case
now ignores variables with signs (#2558).schema.preceedingPlugins
(#2455).cache
option to store the info about processed files in order to only operate on the changed ones the next time you run stylelint (#2293).at-rule-semicolon-space-before
rule (#2388).ignore: ["comments"]
to max-empty-lines
(#2401).ignore: ["default-namespace"]
to selector-type-no-unknown
(#2461).ignoreDefaultNamespaces
option to selector-type-no-unknown
(#2461).decl/
folder of Flow types is shipped with the package, for consumers that use Flow (#2322).function-url-scheme-whitelist
was working incorrectly if more than one URL scheme were specified (#2447).no-duplicate-selector
now includes the duplicate selector’s first usage line in message (#2415).no-extra-semicolons
false positives for comments after custom property sets (#2396).value-keyword-case
false positives for attr
, counter
, counters
functions and counter-reset
property (#2407).ignoreFontFamilyName
option to font-family-no-duplicate
(#2314).ignorePattern
option to max-line-length
(#2333).lodash
dependency to match feature usage, fixing a conflict with Modernizr (#2353).color-hex-case
false positives for ID references in url
functions (#2338).max-line-length
now reports correct column for SCSS comments (#2340).selector-class-pattern
false positive in SCSS when combining interpolated and nested selectors (#2344).selector-type-case
false positive for placeholder selectors (#2360).block-no-single-line
. Use block-opening-brace-newline-after
and block-closing-brace-newline-before
rules with the option "always"
instead.declaration-block-properties-order
. Use the stylelint-order
plugin pack instead.rule-nested-empty-line-before
and rule-non-nested-empty-line-before
. Use the new rule-empty-line-before
rule instead.time-no-imperceptible
. Use the new time-min-milliseconds
rule with 100
as its primary option.media-feature-no-missing-punctuation
.selector-no-empty
.no-browser-hacks
no-indistinguishable-colors
no-unsupported-browser-features
custom-property-no-outside-root
root-no-standard-properties
selector-root-no-composition
.stylelint-disable-reason
could not enforce providing a reason.declaration-block-no-ignored-properties
could not reliably account for replaced elements."all-nested"
option for at-rule-empty-line-before
. Use the "inside-block"
option instead."blockless-group"
option for at-rule-empty-line-before
. Use the "blockless-after-blockless"
option instead."between-comments"
option for comment-empty-line-before
. Use the "after-comment"
option instead."at-rules-without-declaration-blocks"
option for max-nesting-depth
. Use the "blockless-at-rules"
option instead.time-min-milliseconds
rule, to replace time-no-imperceptible
(#2289).except: ["after-same-name"]
option to at-rule-empty-line-before
(#2225).configOverrides
now work with extends
(#2295).max-line-length
no longer reports incorrect column positions for lines with url()
or import
(#2287).selector-pseudo-class-no-unknown
no longer warns for proprietary webkit pseudo-classes (#2264).unit-no-unknown
accepts fr
units (#2308).stylelint.formatters
exposed in public Node.js 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.js 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).customSyntax
(for Node.js 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
.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.null
to turn off a rule caused errors.null
for rules that take an array for their primary option would trigger a validation warning.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.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.--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-whitelist
configFile
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
.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.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.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.known-css-properties
dependency.--extract
and extractSyleTagsFromHtml
options. Instead, build and use processors.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."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.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.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.-e
and --extract
CLI flags, and the extractStyleTagsFromHtml
Node.js API option. If you use these flags or option, please consider creating a processor for the community.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
.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.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.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
."emptyLineBefore"
option for declaration-block-properties-order
. If you use this option, please consider creating a plugin for the community."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.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>
.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.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.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.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.js 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.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.shorthand-property-no-redundant-values
now handles uppercase values properly.declaration-block-no-ignored-properties
now longer crashes on nested rules.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.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).stylelint.createRuleTester
.selector-no-qualifying-type
rule.number-leading-zero
will not check @import
at-rules.selector-class-pattern
now ignores non-outputting 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.selector-pseudo-class-parentheses-space-inside
and selector-attribute-brackets-space-inside
..stylelintignore
file.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
.\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.\r\n
) warning positioning in max-empty-lines
and function-max-empty-lines
.CssSyntaxError
sets errored
on output to true
.function-name-case
now accounts for camelCase function names (e.g. translateX
, scaleX
etc) when the lower
option is used.CssSyntaxError
is no longer thrown but reported alongside warnings.stylelint.utils.cssWordIsVariable()
.at-rule-name-case
rule.function-name-case
rule.property-case
rule.selector-pseudo-class-case
rule.selector-pseudo-element-case
rule.unit-case
rule.value-keyword-case
rule.indentClosingBrace
option to indentation
.indentInsideParens
option to indentation
.consecutive-duplicates
option for declaration-block-no-duplicate-properties
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
unitsunit-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-*
.stylelint.createRuleTester()
.declaration-block-no-ignored-properties
rule.function-max-empty-lines
rule.function-url-data-uris
rule.block-closing-brace-newline-after
accepts single-line comments immediately after the closing brace.block-closing-brace-newline-after
use of “single space”, rather than “newline”, in its messages.font-weight-notation
now ignores initial
value.function-*
rules should all now ignore all Sass maps and lists.function-calc-no-unspaced-operator
accepts newlines.function-comma-space-after
, function-comma-space-before
, function-parentheses-newline-inside
and function-parentheses-space-inside
now ignore SCSS maps.max-line-length
options validation.no-unknown-animations
now ignores none
, initial
, inherit
, unset
values.property-value-blacklist
and -whitelist
no longer error on properties without a corresponding list entry.selector-class-pattern
now ignores selectors with Sass interpolation.selector-id-pattern
now ignores selectors with Sass interpolation.selector-no-id
now ignores keyframe selectors.unit-blacklist
and unit-whitelist
now ignores url
functions.function-calc-no-unspaced-operator
now better ignores non-calc
functions.no-descending-specificity
no longer delivers false positives after second run in Atom linter.stylelint-disable-rule
imported correctly.at-rule-semicolon-newline-after
rule.no-indistinguishable-colors
rule.stylelint-disable-reason
rule.declaration-bang-space-*
understands arbitrary bang declarations (e.g. !default
).font-weight-notation
now ignore inherit
value.indentation
treats @nest
at-rules like regular rules with selectors.no-duplicate-selectors
contextualizes selectors by all at-rules, not just media queries.no-duplicate-selectors
no longer delivers false positives after second run in Atom linter.no-duplicate-selectors
no longer delivers false positives with descendant combinators.number-no-trailing-zeros
no longer delivers false positives in url()
arguments.root-no-standard-properties
no longer delivers false positives inside the :not()
pseudo-selector.selector-list-comma-*
rules no longer deliver false positives inside functional notation.selector-type-case
rule.string-no-newline
no longer stumbles when there are comment-starting characters inside strings.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.no-unsupported-browser-features
options now optional.no-duplicate-selectors
now ignores keyframe selectors."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.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.console.log()
s in property-unit-whitelist
.console.log()
s in 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.stylelint.utils.ruleTester
because its dependencies broke things.tape
to dependencies to support testUtils
.testUtils
in npm package whitelist.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.js 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.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.selector-no-id
no longer warns about Sass interpolation when multiple interpolations are used in a selector..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.selector-no-vendor-prefix
now handles custom-property-sets.selector-no-type
ignores nth-child
pseudo-classes and @keyframes
selectors.max-line-length
handles url()
functions better.block-opening-brace-newline-after
and declaration-block-semicolon-newline-after
handle end-of-line comments better.legacyNumberedSeverities
config property to force the legacy severity system.selector-no-id
ignores Sass-style interpolation.--config
property in PostCSS and Node.js APIs. Still using it in the CLI.root
node, including: max-line-length
, max-empty-lines
, no-eol-whitespace
, no-missing-eof-newline
, and string-quotes
.rule-properties-order
to get confused by properties with an unspecified order.null
was used on rules whose primary options are arrays.stylelint-commands
ignore
option to comment-empty-line-before
.rule-properties-order
and potentially other rules that accept arrays as primary options.no-missing-eof-newline
no longer complains about completely empty files.nesting-block-opening-brace-space-before
and nesting-block-opening-brace-newline-before
rules.4.0
.rule-single-line-max-declarations
to declaration-block-single-line-max-declarations
and changed scope of the single-line to the declaration block.rule-no-single-line
to declaration-block-no-single-line
and changed scope of the single-line to the declaration block.function-space-after
rule to function-whitespace-after
.comment-space-inside
rule to comment-whitespace-inside
.no-multiple-empty-lines
rule to max-empty-lines
(takes an int
as option).plugins
is now an array instead of an object. And plugins should be created with stylelint.createPlugin()
..stylelintrc
stylelint.config.js
stylelint
property in package.json
ignoreFiles
option to config.configFile
option to Node.js API.comment-whitespace-inside
now ignores copyright (/*!
) and sourcemap (/*#
) comments.rule-no-duplicate-properties
now ignores the src
property.function-calc-no-unspaced-operator
ignores characters in $sass
and @less
variables.rule-properties-order
allows comments at the top of groups that expect newlines before them.styleSearch()
and the rules it powers will not trip up on single-line (//
) comments.selector-combinator-space-before
now better handles nested selectors starting with combinators.rule-properties-order
now deals property with -moz-osx-font-smoothing
.rule-properties-order
now accounts for property names containing multiple hyphens.rule-properties-order
grouping bug.selector-pseudo-element-colon-notation
typo in rule name resulting in undefined severity.dist/
build.property-whitelist
, rule-no-duplicate-properties
, and rule-properties-order
ignore variables ($sass
, @less
, and --custom-property
).root-no-standard-properties
ignores $sass
and @less
variables.comment-empty-line-before
and comment-space-inside
no longer complain about //
comments.number-no-trailing-zeros
no longer flags at-import at-rules.selector-no-type
no longer flags the nesting selector (&
).configFile
option to PostCSS plugin.function-parentheses-newline-inside
and function-parentheses-space-inside
bug with nested functions.selector-class-pattern
rule.selector-id-pattern
rule.function-parentheses-newline-inside
rule."always-single-line"
and "never-single-line"
options to function-parentheses-space-inside
.syntax
argument bug.color-no-hex
rule.color-no-named
rule.function-blacklist
rule.function-whitelist
rule.unit-blacklist
rule.unit-whitelist
rule.property-unit-blacklist
rule.property-unit-whitelist
rule.rule-single-line-max-declarations
rule.max-line-length
rule.first-nested
exception to comment-empty-line-before
.*-blacklist
& -*whitelist
rules e.g. { "function-blacklist": "calc"}
rule-properties-order
.rule-properties-order
.function-calc-no-unspaced-operator
.function-space-after
.comment-space-inside
.comment-space-inside
allows any number of asterisks at the beginning and end of comments.{ unspecified: "bottom }"
option not to be applied within rule-properties-order
.function-comma-*
whitespace rules to improperly judge whether to enforce single- or multi-line options.required
or being inserted directly into the configuration object as a function.string
and json
formatters..stylelintrc
JSON file.extends
property.function-comma-newline-after
rule.function-comma-newline-before
rule."always-single-line"
and "never-single-line"
options to function-comma-space-after
rule."always-single-line"
and "never-single-line"
options to function-comma-space-before
rule.media-query-list-comma-*
rules now only apply to @media
statements.function-linear-gradient-no-nonstandard-direction
rule.rule-properties-order
now by default ignores the order of properties left out of your specified array; and the options "top"
, "bottom"
, and "ignore"
are provided to change that behavior.rule-properties-order
now looks for roots of hyphenated properties in custom arrays so each extension (e.g. padding-top
as an extension of padding
) does not need to be specified individually."always-single-line"
option to declaration-colon-space-after
.declaration-colon-newline-after
"always-multi-line"
warning message.declaration-colon-newline-after
rule.indentation
rule now checks indentation of multi-line at-rule params, unless there’s the except
option of param
.selector-list-comma-newline-after
.#${sass-interpolation}
in rules checking for hex colors.custom-property-pattern
and custom-media-pattern
.color-no-invalid-hex
rule no longer flags hashes in url()
arguments.node.raw()
instead of node.raws
to avoid expected errors.postcss-selector-parser
updated to improve location accuracy for selector-no-*
rules.4.x
.5.0.2+
.after-comment
ignore
option to the at-rule-empty-line-before
rule.indentation
rule now correctly handles *
hacks on property names.media-feature-colon-space-after
and media-feature-colon-space-before
rules now only apply to @media
statements.rule-no-shorthand-property-overrides
rule message is now consistent with the other messages.validateOptions()
.rule-properties-order
and rule-no-duplicate-properties
rules now correctly check inside @rules.validateOptions
to stylelint.utils
for use by authors of custom rules.custom-media-pattern
rule.number-max-precision
rule.ruleTester
from stylelint.utils
because of the additional dependencies it forces.jsesc
devDependency.rule-no-shorthand-property-overrides
rule.ruleTester
to stylelint.utils
for use by authors of custom rules.hierarchicalSelectors
bug in indentation
rule.~=
is no longer mistaken for combinator in selector-combinator-space-*
.report
, ruleMessages
, and styleSearch
in stylelint.utils
for use by external plugin rules.hierarchicalSelectors
option to indentation
rule.nesting-block-opening-brace-space-before
rule.nesting-block-opening-brace-newline-before
rule.color-hex-case
rule message is now consistent with the color-hex-length
rule.property-blacklist
rule message is now consistent with the property-whitelist
rule.comment-space-inside
rule message.color-hex-case
rule.color-hex-length
rule.indentation
rule.selector-list-comma-newline-*
rules.selector-combinator-space-*
no longer checks :nth-child()
arguments.block-opening-brace-newline-before
rule.block-opening-brace-space-before
rule.rule-trailing-semicolon
rule.rule-no-duplicate-properties
rule.rule-properties-order
rule.at-rule-empty-line-before
rule.at-rule-no-vendor-prefix
rule.block-closing-brace-newline-after
rule.block-closing-brace-newline-before
rule.block-closing-brace-space-after
rule.block-closing-brace-space-before
rule.block-no-empty
rule.block-opening-brace-newline-after
rule.block-opening-brace-newline-before
rule.block-opening-brace-space-after
rule.block-opening-brace-space-before
rule.color-no-invalid-hex
rule.comment-empty-line-before
rule.comment-space-inside
rule.custom-property-no-outside-root
rule.custom-property-pattern
rule.declaration-bang-space-after
rule.declaration-bang-space-before
rule.declaration-block-semicolon-newline-after
rule.declaration-block-semicolon-newline-before
rule.declaration-block-semicolon-space-after
rule.declaration-block-semicolon-space-before
rule.declaration-colon-space-after
rule.declaration-colon-space-before
rule.declaration-no-important
rule.function-calc-no-unspaced-operator
rule.function-comma-space-after
rule.function-comma-space-before
rule.function-parentheses-space-inside
rule.function-space-after
rule.function-url-quotes
rule.indentation
rule.media-feature-colon-space-after
rule.media-feature-colon-space-before
rule.media-feature-name-no-vendor-prefix
rule.media-feature-range-operator-space-after
rule.media-feature-range-operator-space-before
rule.media-query-list-comma-newline-after
rule.media-query-list-comma-newline-before
rule.media-query-list-comma-space-after
rule.media-query-list-comma-space-before
rule.media-query-parentheses-space-inside
rule.no-eol-whitespace
rule.no-missing-eof-newline
rule.no-multiple-empty-lines
rule.number-leading-zero
rule.number-no-trailing-zeros
rule.number-zero-length-no-unit
rule.property-blacklist
rule.property-no-vendor-prefix
rule.property-whitelist
rule.root-no-standard-properties
rule.rule-nested-empty-line-before
rule.rule-no-duplicate-properties
rule.rule-no-single-line
rule.rule-non-nested-empty-line-before
rule.rule-properties-order
rule.rule-trailing-semicolon
rule.selector-combinator-space-after
rule.selector-combinator-space-before
rule.selector-list-comma-newline-after
rule.selector-list-comma-newline-before
rule.selector-list-comma-space-after
rule.selector-list-comma-space-before
rule.selector-no-attribute
rule.selector-no-combinator
rule.selector-no-id
rule.selector-no-type
rule.selector-no-universal
rule.selector-no-vendor-prefix
rule.selector-pseudo-element-colon-notation
rule.selector-root-no-composition
rule.string-quotes
rule.value-list-comma-newline-after
rule.value-list-comma-newline-before
rule.value-list-comma-space-after
rule.value-list-comma-space-before
rule.value-no-vendor-prefix
rule.