Détail du package

stylelint-config-plus

cenfun347MIT1.1.4

stylelint-config-plus

readme

stylelint-config-plus

Install

npm i stylelint-config-plus -D

Usage

// stylelint.config.js
export default {
    extends: ["stylelint-config-plus"]
};

Rules

Base on stylelint@16.23.0 (2025/8/5)
| |Rules|Count| | |:-:|-----|----:|--:| | |All rules| 205| | |✔️|Defined in plus| 147|71.7%| | ❌|Undefined| 58|28.3%| | ✅|Recommended + Standard| 82|40.0%| |🔧|Fixable| 99|48.3%| |🎨|Stylistic| 64|31.2%|

Details

Rules Type Enabled Value
1 alpha-value-notation ✅🔧 ✔️
<summary>Details</summary>["percentage",{"exceptProperties":["opacity","fill-opacity","flood-opacity","stop-opacity","stroke-opacity"]}]
2 annotation-no-unknown ✔️ true
3 at-rule-allowed-list
4 at-rule-descriptor-no-unknown ✔️ true
5 at-rule-descriptor-value-no-unknown ✔️ true
6 at-rule-disallowed-list
7 at-rule-empty-line-before ✅🔧 ✔️
<summary>Details</summary>["always",{"except":["blockless-after-same-name-blockless","first-nested"],"ignore":["after-comment"]}]
8 at-rule-no-deprecated ✅🔧 ✔️ true
9 at-rule-no-unknown ✔️
<summary>Details</summary>[true,{"ignoreAtRules":["at-root","content","debug","each","else","else if","error","extend","for","forward","function","if","import","include","media","mixin","return","use","warn","while"]}]
10 at-rule-no-vendor-prefix ✅🔧 ✔️ true
11 at-rule-prelude-no-invalid ✔️ [true,{"ignoreAtRules":["media"]}]
12 at-rule-property-required-list
13 block-no-empty ✔️ true
14 block-no-redundant-nested-style-rules ✔️ true
15 color-function-alias-notation ✅🔧 ✔️ "without-alpha"
16 color-function-notation ✅🔧 ✔️ "modern"
17 color-hex-alpha
18 color-hex-length ✅🔧 ✔️ "short"
19 color-named
20 color-no-hex
21 color-no-invalid-hex
22 comment-empty-line-before ✅🔧 ✔️
<summary>Details</summary>["always",{"except":["first-nested"],"ignore":["stylelint-commands"]}]
23 comment-no-empty ✔️ true
24 comment-pattern
25 comment-whitespace-inside ✅🔧 ✔️ "always"
26 comment-word-disallowed-list
27 container-name-pattern ✔️
<summary>Details</summary>["^(--)?([a-z][a-z0-9]*)(-[a-z0-9]+)*$",{"message":"(name) => \"Expected container name \"${name}\" to be kebab-case\""}]
28 custom-media-pattern ✔️
<summary>Details</summary>["^([a-z][a-z0-9]*)(-[a-z0-9]+)*$",{"message":"(name) => \"Expected custom media query name \"${name}\" to be kebab-case\""}]
29 custom-property-empty-line-before ✅🔧 ✔️
<summary>Details</summary>["always",{"except":["after-custom-property","first-nested"],"ignore":["after-comment","inside-single-line-block"]}]
30 custom-property-no-missing-var-function ✔️ true
31 custom-property-pattern ✔️
<summary>Details</summary>["^([a-z][a-z0-9]*)(-[a-z0-9]+)*$",{"message":"(name) => \"Expected custom property name \"${name}\" to be kebab-case\""}]
32 declaration-block-no-duplicate-custom-properties ✔️ true
33 declaration-block-no-duplicate-properties ✅🔧 ✔️
<summary>Details</summary>[true,{"ignore":["consecutive-duplicates-with-different-syntaxes"]}]
34 declaration-block-no-redundant-longhand-properties ✅🔧 ✔️ true
35 declaration-block-no-shorthand-property-overrides ✔️ true
36 declaration-block-single-line-max-declarations ✔️ 1
37 declaration-empty-line-before ✅🔧 ✔️
<summary>Details</summary>["always",{"except":["after-declaration","first-nested"],"ignore":["after-comment","inside-single-line-block"]}]
38 declaration-no-important
39 declaration-property-max-values
40 declaration-property-unit-allowed-list
41 declaration-property-unit-disallowed-list
42 declaration-property-value-allowed-list
43 declaration-property-value-disallowed-list
44 declaration-property-value-keyword-no-deprecated ✅🔧 ✔️ true
45 declaration-property-value-no-unknown ✔️ true
46 font-family-name-quotes ✅🔧 ✔️ "always-where-recommended"
47 font-family-no-duplicate-names ✔️ true
48 font-family-no-missing-generic-family-keyword ✔️ null
49 font-weight-notation 🔧 ✔️ undefined
50 function-allowed-list
51 function-calc-no-unspaced-operator ✅🔧 ✔️ true
52 function-disallowed-list
53 function-linear-gradient-no-nonstandard-direction
54 function-name-case ✅🔧 ✔️ "lower"
55 function-no-unknown
56 function-url-no-scheme-relative
57 function-url-quotes ✅🔧 ✔️ "always"
58 function-url-scheme-allowed-list
59 function-url-scheme-disallowed-list
60 hue-degree-notation ✅🔧 ✔️ "angle"
61 import-notation ✅🔧 ✔️ "url"
62 keyframe-block-no-duplicate-selectors ✔️ true
63 keyframe-declaration-no-important ✔️ true
64 keyframe-selector-notation ✅🔧 ✔️
<summary>Details</summary>"percentage-unless-within-keyword-only-block"
65 keyframes-name-pattern ✔️
<summary>Details</summary>["^([a-z][a-z0-9]*)(-[a-z0-9]+)*$",{"message":"(name) => \"Expected keyframe name \"${name}\" to be kebab-case\""}]
66 layer-name-pattern ✔️
<summary>Details</summary>["^([a-z][a-z0-9]*)(-[a-z0-9]+)*$",{"message":"(name) => \"Expected layer name \"${name}\" to be kebab-case\""}]
67 length-zero-no-unit ✅🔧 ✔️
<summary>Details</summary>[true,{"ignore":["custom-properties"]}]
68 lightness-notation ✅🔧 ✔️ "percentage"
69 max-nesting-depth
70 media-feature-name-allowed-list
71 media-feature-name-disallowed-list
72 media-feature-name-no-unknown ✔️ true
73 media-feature-name-no-vendor-prefix ✅🔧 ✔️ true
74 media-feature-name-unit-allowed-list
75 media-feature-name-value-allowed-list
76 media-feature-name-value-no-unknown ✔️ true
77 media-feature-range-notation ✅🔧 ✔️ "context"
78 media-query-no-invalid ✔️ true
79 media-type-no-deprecated ✔️ true
80 named-grid-areas-no-invalid ✔️ true
81 nesting-selector-no-missing-scoping-root ✔️ true
82 no-descending-specificity ✔️ true
83 no-duplicate-at-import-rules ✔️ true
84 no-duplicate-selectors ✔️ true
85 no-empty-source ✔️ true
86 no-invalid-double-slash-comments ✔️ true
87 no-invalid-position-at-import-rule ✔️ true
88 no-invalid-position-declaration ✔️ true
89 no-irregular-whitespace ✔️ true
90 no-unknown-animations
91 no-unknown-custom-media
92 no-unknown-custom-properties
93 number-max-precision ✔️ 4
94 property-allowed-list
95 property-disallowed-list
96 property-no-deprecated ✅🔧 ✔️ true
97 property-no-unknown ✔️ true
98 property-no-vendor-prefix ✅🔧 ✔️ true
99 rule-empty-line-before ✅🔧 ✔️
<summary>Details</summary>["always-multi-line",{"except":["first-nested"],"ignore":["after-comment"]}]
100 rule-selector-property-disallowed-list
101 selector-anb-no-unmatchable ✔️ true
102 selector-attribute-name-disallowed-list
103 selector-attribute-operator-allowed-list
104 selector-attribute-operator-disallowed-list
105 selector-attribute-quotes ✅🔧 ✔️ "always"
106 selector-class-pattern ✔️
<summary>Details</summary>["^([a-z][a-z0-9]*)(-[a-z0-9]+)*$",{"message":"(selector) => \"Expected class selector \"${selector}\" to be kebab-case\""}]
107 selector-combinator-allowed-list
108 selector-combinator-disallowed-list
109 selector-disallowed-list
110 selector-id-pattern ✔️
<summary>Details</summary>["^([a-z][a-z0-9]*)(-[a-z0-9]+)*$",{"message":"(selector) => \"Expected id selector \"${selector}\" to be kebab-case\""}]
111 selector-max-attribute
112 selector-max-class
113 selector-max-combinators
114 selector-max-compound-selectors
115 selector-max-id
116 selector-max-pseudo-class
117 selector-max-specificity
118 selector-max-type
119 selector-max-universal
120 selector-nested-pattern
121 selector-no-qualifying-type
122 selector-no-vendor-prefix ✅🔧 ✔️ true
123 selector-not-notation ✅🔧 ✔️ "complex"
124 selector-pseudo-class-allowed-list
125 selector-pseudo-class-disallowed-list
126 selector-pseudo-class-no-unknown ✔️
<summary>Details</summary>[true,{"ignorePseudoClasses":["deep","global"]}]
127 selector-pseudo-element-allowed-list
128 selector-pseudo-element-colon-notation ✅🔧 ✔️ "double"
129 selector-pseudo-element-disallowed-list
130 selector-pseudo-element-no-unknown ✔️ true
131 selector-type-case ✅🔧 ✔️ "lower"
132 selector-type-no-unknown ✔️
<summary>Details</summary>[true,{"ignore":["custom-elements"]}]
133 shorthand-property-no-redundant-values ✅🔧 ✔️ true
134 string-no-newline ✔️
<summary>Details</summary>[true,{"ignore":["at-rule-preludes","declaration-values"]}]
135 syntax-string-no-invalid ✔️ true
136 time-min-milliseconds
137 unit-allowed-list
138 unit-disallowed-list
139 unit-no-unknown
140 value-keyword-case ✅🔧 ✔️ "lower"
141 value-no-vendor-prefix ✅🔧 ✔️
<summary>Details</summary>[true,{"ignoreValues":["box","inline-box"]}]
142 @stylistic/at-rule-name-case 🔧🎨 ✔️ "lower"
143 @stylistic/at-rule-name-space-after 🔧🎨 ✔️ "always-single-line"
144 @stylistic/at-rule-semicolon-newline-after 🔧🎨 ✔️ "always"
145 @stylistic/block-closing-brace-empty-line-before 🔧🎨 ✔️ "never"
146 @stylistic/block-closing-brace-newline-after 🔧🎨 ✔️ "always"
147 @stylistic/block-closing-brace-newline-before 🔧🎨 ✔️ "always-multi-line"
148 @stylistic/block-closing-brace-space-before 🔧🎨 ✔️ "always-single-line"
149 @stylistic/block-opening-brace-newline-after 🔧🎨 ✔️ "always-multi-line"
150 @stylistic/block-opening-brace-space-after 🔧🎨 ✔️ "always-single-line"
151 @stylistic/block-opening-brace-space-before 🔧🎨 ✔️ "always"
152 @stylistic/color-hex-case 🔧🎨 ✔️ "lower"
153 @stylistic/declaration-bang-space-after 🔧🎨 ✔️ "never"
154 @stylistic/declaration-bang-space-before 🔧🎨 ✔️ "always"
155 @stylistic/declaration-block-semicolon-newline-after 🔧🎨 ✔️ "always"
156 @stylistic/declaration-block-semicolon-space-after 🔧🎨 ✔️ "always-single-line"
157 @stylistic/declaration-block-semicolon-space-before 🔧🎨 ✔️ "never"
158 @stylistic/declaration-block-trailing-semicolon 🔧🎨 ✔️ "always"
159 @stylistic/declaration-colon-newline-after 🔧🎨 ✔️ "always-multi-line"
160 @stylistic/declaration-colon-space-after 🔧🎨 ✔️ "always-single-line"
161 @stylistic/declaration-colon-space-before 🔧🎨 ✔️ "never"
162 @stylistic/function-comma-newline-after 🔧🎨 ✔️ "always-multi-line"
163 @stylistic/function-comma-space-after 🔧🎨 ✔️ "always-single-line"
164 @stylistic/function-comma-space-before 🔧🎨 ✔️ "never"
165 @stylistic/function-max-empty-lines 🔧🎨 ✔️ 0
166 @stylistic/function-parentheses-newline-inside 🔧🎨 ✔️ "always-multi-line"
167 @stylistic/function-parentheses-space-inside 🔧🎨 ✔️ "never-single-line"
168 @stylistic/function-whitespace-after 🔧🎨 ✔️ "always"
169 @stylistic/indentation 🔧🎨 ✔️ 4
170 @stylistic/max-empty-lines 🔧🎨 ✔️ 1
171 @stylistic/max-line-length 🎨 ✔️ 120
172 @stylistic/media-feature-colon-space-after 🔧🎨 ✔️ "always"
173 @stylistic/media-feature-colon-space-before 🔧🎨 ✔️ "never"
174 @stylistic/media-feature-name-case 🔧🎨 ✔️ "lower"
175 @stylistic/media-feature-parentheses-space-inside 🔧🎨 ✔️ "never"
176 @stylistic/media-feature-range-operator-space-after 🔧🎨 ✔️ "always"
177 @stylistic/media-feature-range-operator-space-before 🔧🎨 ✔️ "always"
178 @stylistic/media-query-list-comma-newline-after 🔧🎨 ✔️ "always-multi-line"
179 @stylistic/media-query-list-comma-space-after 🔧🎨 ✔️ "always-single-line"
180 @stylistic/media-query-list-comma-space-before 🔧🎨 ✔️ "never"
181 @stylistic/no-empty-first-line 🎨 ✔️ true
182 @stylistic/no-eol-whitespace 🔧🎨 ✔️ true
183 @stylistic/no-extra-semicolons 🔧🎨 ✔️ true
184 @stylistic/no-missing-end-of-source-newline 🔧🎨 ✔️ true
185 @stylistic/number-leading-zero 🔧🎨 ✔️ "always"
186 @stylistic/number-no-trailing-zeros 🔧🎨 ✔️ true
187 @stylistic/property-case 🔧🎨 ✔️ "lower"
188 @stylistic/selector-attribute-brackets-space-inside 🔧🎨 ✔️ "never"
189 @stylistic/selector-attribute-operator-space-after 🔧🎨 ✔️ "never"
190 @stylistic/selector-attribute-operator-space-before 🔧🎨 ✔️ "never"
191 @stylistic/selector-combinator-space-after 🔧🎨 ✔️ "always"
192 @stylistic/selector-combinator-space-before 🔧🎨 ✔️ "always"
193 @stylistic/selector-descendant-combinator-no-non-space 🔧🎨 ✔️ true
194 @stylistic/selector-list-comma-newline-after 🔧🎨 ✔️ "always"
195 @stylistic/selector-list-comma-space-before 🔧🎨 ✔️ "never"
196 @stylistic/selector-max-empty-lines 🔧🎨 ✔️ 0
197 @stylistic/selector-pseudo-class-case 🔧🎨 ✔️ "lower"
198 @stylistic/selector-pseudo-class-parentheses-space-inside 🔧🎨 ✔️ "never"
199 @stylistic/selector-pseudo-element-case 🔧🎨 ✔️ "lower"
200 @stylistic/string-quotes 🔧🎨 ✔️ "double"
201 @stylistic/unit-case 🔧🎨 ✔️ "lower"
202 @stylistic/value-list-comma-newline-after 🔧🎨 ✔️ "always-multi-line"
203 @stylistic/value-list-comma-space-after 🔧🎨 ✔️ "always-single-line"
204 @stylistic/value-list-comma-space-before 🔧🎨 ✔️ "never"
205 @stylistic/value-list-max-empty-lines 🔧🎨 ✔️ 0

Changelog

CHANGELOG.md