Stylelint
# Stylelint
# 规则总览
# 图例
- ℹ️ —— 点击此图标可以访问每条规则对应的 Stylelint 官方文档。
- ✅️ —— 表示此规则属于 Stylelint 官方推荐规则。
- 🛠️️ —— 表示此规则可自动修复。
# 第一部分:疑似写错
点击查看 rule--possible-errors.js 代码
module.exports = {
// Color
'color-no-invalid-hex': true,
// Font family
'font-family-no-duplicate-names': true,
'font-family-no-missing-generic-family-keyword': true,
// Function
'function-calc-no-invalid': true,
'function-calc-no-unspaced-operator': true,
'function-linear-gradient-no-nonstandard-direction': true,
// String
'string-no-newline': true,
// Unit
'unit-no-unknown': true,
// Property
'property-no-unknown': [true, { checkPrefixed: true }],
// Keyframe declaration
'keyframe-declaration-no-important': true,
// Declaration block
'declaration-block-no-duplicate-properties': [true, { ignore: ["consecutive-duplicates-with-different-values"] }],
'declaration-block-no-shorthand-property-overrides': true,
// Block
'block-no-empty': true,
// Selector
'selector-pseudo-class-no-unknown': true,
'selector-pseudo-element-no-unknown': [true, { ignorePseudoElements: ['v-deep'] }],
'selector-type-no-unknown': true,
// Media feature
'media-feature-name-no-unknown': true,
// At-rule
'at-rule-no-unknown': [true, {
ignoreAtRules: [
'use', 'forward',
'mixin', 'include',
'function',
'extend',
'at-root',
'error', 'warn', 'debug',
'if', 'else',
'each', 'for', 'while',
],
}],
// Comment
'comment-no-empty': true,
// General / Sheet
// 'no-descending-specificity': true, // TODO: study later
'no-duplicate-at-import-rules': true,
// 'no-duplicate-selectors': null,
'no-empty-source': true,
'no-extra-semicolons': true,
'no-invalid-double-slash-comments': true,
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Color
'color-no-invalid-hex': true
ℹ️ (opens new window) ✅️ —— 十六进制的颜色写法必须合法。
# Font family
'font-family-no-duplicate-names': true
ℹ️ (opens new window) ✅️ —— 禁止字体列表中出现重复项。'font-family-no-missing-generic-family-keyword': true
ℹ️ (opens new window) ✅️ —— 字体列表中必须提供一个通用字族名(比如serif
、sans-serif
等)。
# Function
'function-calc-no-invalid': true
ℹ️ (opens new window) ✅️ ——calc()
函数内不允许出现不合法的表达式。'function-calc-no-unspaced-operator': true
ℹ️ (opens new window) ✅️ ——calc()
函数内的运算符前后需要加一个空格,或换行并缩进。'function-linear-gradient-no-nonstandard-direction': true
ℹ️ (opens new window) ✅️ —— 线性渐变的方向参数必须符合标准语法。
# String
'string-no-newline': true
ℹ️ (opens new window) ✅️ —— 禁止字符串中出现未转义的换行。
# Unit
'unit-no-unknown': true
ℹ️ (opens new window) ✅️ —— 禁止出现未知的单位。
# Property
'property-no-unknown': [true, { checkPrefixed: true }]
ℹ️ (opens new window) ✅️ —— 禁止出现未知的属性。浏览器私有前缀也会被校验。
# Keyframe declaration
'keyframe-declaration-no-important': true
ℹ️ (opens new window) ✅️ —— 禁止在动画关键帧声明中使用!important
。
# Declaration block
'declaration-block-no-duplicate-properties': [true, { ignore: ["consecutive-duplicates-with-different-values"] }]
ℹ️ (opens new window) ✅️ —— 禁止声明块中出现重复的属性。不过,属性相同但连续书写且值不同的多条声明是允许的。'declaration-block-no-shorthand-property-overrides': true
ℹ️ (opens new window) ✅️ —— 声明块中的详细声明不能被简写声明覆盖。
# Block
'block-no-empty': true
ℹ️ (opens new window) ✅️ —— 禁止出现空的代码块。包含注释的代码块不会被视为空。
# Selector
'selector-pseudo-class-no-unknown': true
ℹ️ (opens new window) ✅️ —— 禁止选择符中出现未知的伪类。'selector-pseudo-element-no-unknown': [true, { ignorePseudoElements: ['v-deep'] }]
ℹ️ (opens new window) ✅️ —— 禁止选择符中出现未知的伪元素。允许使用 Vue 项目约定的::v-deep
选择符。'selector-type-no-unknown': true
ℹ️ (opens new window) ✅️ —— 禁止选择符中出现未知的类型选择符。
# Media feature
'media-feature-name-no-unknown': true
ℹ️ (opens new window) ✅️ —— 禁止媒体查询条件中出现未知的特性名。
# At-rule
'at-rule-no-unknown': [true, { ignoreAtRules: [...] }]
ℹ️ (opens new window) ✅️ —— 禁止出现未知的@
规则。Sass 内置的@
规则已经加进白名单了。
# Comment
'comment-no-empty': true
ℹ️ (opens new window) ✅️ —— 禁止出现空注释。
# General / Sheet
ℹ️ (opens new window) ✅️ —— [不限] 暂不限制选择符优先级的排序问题。'no-descending-specificity': true
'no-duplicate-at-import-rules': true
ℹ️ (opens new window) ✅️ —— 禁止出现重复的@
规则。ℹ️ (opens new window) ✅️ —— [不限] 是否出现重复的选择符。“在选择符列表中重复的选择符” 和 “选择符相同的声明” 这两种情况都会被检查出来。'no-duplicate-selectors': true
'no-empty-source': true
ℹ️ (opens new window) ✅️ —— 禁止出现空文件。如果文件中有注释,不会被视为空文件。'no-extra-semicolons': true
ℹ️ (opens new window) ✅️ 🛠️ —— 禁止出现多余的分号。'no-invalid-double-slash-comments': true
ℹ️ (opens new window) ✅️ —— 禁止在 CSS 源码中通过//
实现类似注释的效果。Sass 等预处理器语言中的单行注释不受此规则影响。
# 第二部分:限制语言特性
点击查看 rule--limit-language-features.js 代码
module.exports = {
// Color
// 'color-named': null,
// 'color-no-hex': null,
// Function
// 'function-blacklist': null,
// 'function-url-no-scheme-relative': null,
// 'function-url-scheme-blacklist': null,
// 'function-url-scheme-whitelist': null,
// 'function-whitelist': null,
// Keyframes
// 'keyframes-name-pattern': null,
// Number
// 'number-max-precision': null,
// Time
// 'time-min-milliseconds': null,
// Unit
// 'unit-blacklist': null,
// 'unit-whitelist': null,
// Shorthand property
'shorthand-property-no-redundant-values': true,
// Value
'value-no-vendor-prefix': true,
// Custom property
// 'custom-property-pattern': null,
// Property
// 'property-blacklist': null,
'property-no-vendor-prefix': true,
// 'property-whitelist': null,
// Declaration
// 'declaration-block-no-redundant-longhand-properties': null,
// 'declaration-no-important': null,
// 'declaration-property-unit-blacklist': null,
// 'declaration-property-unit-whitelist': null,
// 'declaration-property-value-blacklist': null,
// 'declaration-property-value-whitelist': null,
// Declaration block
'declaration-block-single-line-max-declarations': 1,
// Selector
// 'selector-attribute-operator-blacklist': null,
// 'selector-attribute-operator-whitelist': null,
'selector-class-pattern': /[a-z]([a-z0-9\-]*[a-z0-9])*/,
// 'selector-combinator-blacklist': null,
// 'selector-combinator-whitelist': null,
'selector-id-pattern': /[a-z]([a-z0-9\-]*[a-z0-9])*/,
// 'selector-max-attribute': null,
// 'selector-max-class': null,
// 'selector-max-combinators': null,
// 'selector-max-compound-selectors': null,
'selector-max-empty-lines': 0,
// 'selector-max-id': null,
// 'selector-max-pseudo-class': null,
// 'selector-max-specificity': null,
// 'selector-max-type': null,
// 'selector-max-universal': null,
// 'selector-nested-pattern': null,
// 'selector-no-qualifying-type': null,
'selector-no-vendor-prefix': [true, { ignoreSelectors: [] }],
// 'selector-pseudo-class-blacklist': null,
// 'selector-pseudo-class-whitelist': null,
// 'selector-pseudo-element-blacklist': null,
// 'selector-pseudo-element-whitelist': null,
// Media feature
// 'media-feature-name-blacklist': null,
// 'media-feature-name-no-vendor-prefix': null,
// 'media-feature-name-value-whitelist': null,
// 'media-feature-name-whitelist': null,
// Custom media
// 'custom-media-pattern': null,
// At-rule
// 'at-rule-blacklist': null,
'at-rule-no-vendor-prefix': true,
// 'at-rule-property-requirelist': null,
// 'at-rule-whitelist': null,
// Comment
// 'comment-word-blacklist': null,
// General / Sheet
// 'max-nesting-depth': null,
// 'no-unknown-animations': null, // cannot resolve anim defined externally
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Color
ℹ️ (opens new window) —— [不限] 是否使用颜色关键字(比如'color-named': '...'
red
、white
等)。ℹ️ (opens new window) —— [不限] 是否使用十六进制颜色表示法。'color-no-hex': true
# Function
ℹ️ (opens new window) —— [不限] 函数黑名单。'function-blacklist': []
ℹ️ (opens new window) —— 禁止'function-url-no-scheme-relative': true
url()
[不限] 函数是否使用省略协议的相对路径。ℹ️ (opens new window) —— [不限] URL 协议黑名单。'function-url-scheme-blacklist': []
ℹ️ (opens new window) —— [不限] URL 协议白名单。'function-url-scheme-whitelist': []
ℹ️ (opens new window) —— [不限] 函数白名单。'function-whitelist': []
# Keyframes
ℹ️ (opens new window) —— [不限] 动画关键帧的命名模式。'keyframes-name-pattern': /.../
# Number
ℹ️ (opens new window) —— [不限] 数字的最大精度(小数位数)。'number-max-precision': 999
# Time
ℹ️ (opens new window) —— [不限] 毫秒数的最小值。'time-min-milliseconds': 0
# Unit
ℹ️ (opens new window) —— [不限] 单位黑名单。'unit-blacklist': []
ℹ️ (opens new window) —— [不限] 单位白名单。'unit-whitelist': []
# Shorthand property
'shorthand-property-no-redundant-values': true
ℹ️ (opens new window) 🛠️ —— 在可简写的属性中禁止出现冗余值。
# Value
'value-no-vendor-prefix': true
ℹ️ (opens new window) —— 禁止属性值出现浏览器前缀。
# Custom property
ℹ️ (opens new window) —— [不限] 自定义属性的命名模式。'custom-property-pattern': /.../
# Property
ℹ️ (opens new window) —— [不限] 属性黑名单。'property-blacklist': []
'property-no-vendor-prefix': true
ℹ️ (opens new window) —— 禁止属性名出现浏览器前缀。ℹ️ (opens new window) —— [不限] 属性白名单。'property-whitelist': []
# Declaration
ℹ️ (opens new window) —— [不限] 是否出现可被简写的多条声明。'declaration-block-no-redundant-longhand-properties': true
ℹ️ (opens new window) —— [不限] 是否使用'declaration-no-important': true
!important
。ℹ️ (opens new window) —— [不限] 某个属性值的单位的黑名单。'declaration-property-unit-blacklist': {}
ℹ️ (opens new window) —— [不限] 某个属性值的单位的白名单。'declaration-property-unit-whitelist': {}
ℹ️ (opens new window) —— [不限] 某个属性的值的黑名单。'declaration-property-value-blacklist': {}
ℹ️ (opens new window) —— [不限] 某个属性的值的白名单。'declaration-property-value-whitelist': {}
# Declaration block
'declaration-block-single-line-max-declarations': 1
ℹ️ (opens new window) —— 限制声明块写成一行时所能包含的声明数量。
# Selector
ℹ️ (opens new window) —— [不限] 选择符中属性运算符的黑名单。'selector-attribute-operator-blacklist': []
ℹ️ (opens new window) —— [不限] 选择符中属性运算符的白名单。'selector-attribute-operator-whitelist': []
'selector-class-pattern': /.../
ℹ️ (opens new window) —— 指定 class 的命名模式。ℹ️ (opens new window) —— [不限] 选择符中组合符的黑名单。'selector-combinator-blacklist': []
ℹ️ (opens new window) —— [不限] 选择符中组合符的白名单。'selector-combinator-whitelist': []
'selector-id-pattern': /.../
ℹ️ (opens new window) —— 指定 ID 的命名模式。ℹ️ (opens new window) —— [不限] 一个选择符中最多可以出现多少个属性选择符。'selector-max-attribute': 999
ℹ️ (opens new window) —— [不限] 一个选择符中最多可以出现多少个 class。'selector-max-class': 999
ℹ️ (opens new window) —— [不限] 一个选择符中最多可以出现多少个组合符。'selector-max-combinators': 999
ℹ️ (opens new window) —— [不限] 一个选择符中最多可以出现多少个被组合的子选择符。'selector-max-compound-selectors': 999
'selector-max-empty-lines': 0
ℹ️ (opens new window) 🛠️ —— 限制选择符中最多可以出现多少空行。ℹ️ (opens new window) —— [不限] 一个选择符中最多可以出现多少个 ID。'selector-max-id': 999
ℹ️ (opens new window) —— [不限] 一个选择符中最多可以出现多少个伪类。'selector-max-pseudo-class': 999
ℹ️ (opens new window) —— [不限] 选择符优先级计算值的上限。'selector-max-specificity': '0,0,0'
ℹ️ (opens new window) —— [不限] 一个选择符中类型选择符的数量上限。'selector-max-type': 999
ℹ️ (opens new window) —— [不限] 一个选择符中通用选择符('selector-max-universal': 999
*
)的数量上限。ℹ️ (opens new window) —— [不限] 嵌套选择符的命名模式。'selector-nested-pattern': /.../
ℹ️ (opens new window) —— [不限] 是否使用 class、ID、属性选择符修饰类型选择符。'selector-no-qualifying-type': true
'selector-no-vendor-prefix': true
ℹ️ (opens new window) —— 禁止选择符中出现浏览器前缀。ℹ️ (opens new window) —— [不限] 选择符中伪类的黑名单。'selector-pseudo-class-blacklist': []
ℹ️ (opens new window) —— [不限] 选择符中伪类的白名单。'selector-pseudo-class-whitelist': []
ℹ️ (opens new window) —— [不限] 选择符中伪元素的黑名单。'selector-pseudo-element-blacklist': []
ℹ️ (opens new window) —— [不限] 选择符中伪元素的白名单。'selector-pseudo-element-whitelist': []
# Media feature
ℹ️ (opens new window) —— [不限] 媒体查询中特性名的黑名单。'media-feature-name-blacklist': true
ℹ️ (opens new window) —— [不限] 媒体查询中出现浏览器前缀。'media-feature-name-no-vendor-prefix': true
ℹ️ (opens new window) —— [不限] 媒体查询中某个特性的值的白名单。'media-feature-name-value-whitelist': {}
ℹ️ (opens new window) —— [不限] 媒体查询中特性名的白名单。'media-feature-name-whitelist': true
# Custom media
ℹ️ (opens new window) —— [不限] 自定义媒体的命名模式。'custom-media-pattern': /.../
# At-rule
ℹ️ (opens new window) —— [不限]'at-rule-blacklist': true
@
规则黑名单。'at-rule-no-vendor-prefix': true
ℹ️ (opens new window) —— 禁止@
规则中出现浏览器前缀。ℹ️ (opens new window) —— [不限] 某个'at-rule-property-requirelist': {}
@
规则中必须出现的属性。ℹ️ (opens new window) —— [不限]'at-rule-whitelist': true
@
规则黑名单。
# Comment
ℹ️ (opens new window) —— [不限] 注释中的单词黑名单。'comment-word-blacklist': []
# General / Sheet
ℹ️ (opens new window) —— [不限] 选择符的最大嵌套深度。'max-nesting-depth': 999
ℹ️ (opens new window) —— [不限] 是否引用未知的动画名。只要动画名在当前文件中没找到,就会被认为是未知的,但实际上动画有可能是在其它文件中定义的。'no-unknown-animations': true
# 第三部分:代码风格约定
点击查看 rule--stylistic-issues.js 代码
module.exports = {
// Color
'color-hex-case': 'lower',
'color-hex-length': 'short',
// Font family
'font-family-name-quotes': 'always-where-recommended',
// Font weight
'font-weight-notation': 'named-where-possible',
// Function
'function-comma-newline-after': 'always-multi-line',
'function-comma-newline-before': 'never-multi-line',
'function-comma-space-after': 'always-single-line',
'function-comma-space-before': 'never',
'function-max-empty-lines': 0,
'function-name-case': 'lower',
'function-parentheses-newline-inside': 'always-multi-line',
'function-parentheses-space-inside': 'never-single-line',
'function-url-quotes': 'always',
'function-whitespace-after': 'always',
// Number
'number-leading-zero': 'always',
'number-no-trailing-zeros': true,
// String
'string-quotes': 'single',
// Length
'length-zero-no-unit': true,
// Unit
'unit-case': 'lower',
// Value
'value-keyword-case': 'lower',
// Value list
'value-list-comma-newline-after': 'always-multi-line',
'value-list-comma-newline-before': 'never-multi-line',
'value-list-comma-space-after': 'always-single-line',
'value-list-comma-space-before': 'never',
'value-list-max-empty-lines': 0,
// Custom property
// 'custom-property-empty-line-before': null,
// Property
'property-case': 'lower',
// Declaration
'declaration-bang-space-after': 'never',
'declaration-bang-space-before': 'always',
'declaration-colon-newline-after': 'always-multi-line',
'declaration-colon-space-after': 'always-single-line',
'declaration-colon-space-before': 'never',
// 'declaration-empty-line-before': null,
// Declaration block
'declaration-block-semicolon-newline-after': 'always-multi-line',
'declaration-block-semicolon-newline-before': 'never-multi-line',
'declaration-block-semicolon-space-after': 'always-single-line',
'declaration-block-semicolon-space-before': 'never',
'declaration-block-trailing-semicolon': 'always',
// Block
// 'block-closing-brace-empty-line-before': null,
'block-closing-brace-newline-after': ['always', { ignoreAtRules: ['if', 'else'] }],
'block-closing-brace-newline-before': 'always-multi-line',
// 'block-closing-brace-space-after': null, // cannot set to an ideal effect
'block-closing-brace-space-before': 'always-single-line',
'block-opening-brace-newline-after': 'always-multi-line',
// 'block-opening-brace-newline-before': null, // cannot set to an ideal effect
'block-opening-brace-space-after': 'always-single-line',
'block-opening-brace-space-before': 'always',
// Selector
'selector-attribute-brackets-space-inside': 'never',
'selector-attribute-operator-space-after': 'never',
'selector-attribute-operator-space-before': 'never',
'selector-attribute-quotes': 'always',
'selector-combinator-space-after': 'always',
'selector-combinator-space-before': 'always',
'selector-descendant-combinator-no-non-space': true,
'selector-pseudo-class-case': 'lower',
'selector-pseudo-class-parentheses-space-inside': 'never',
'selector-pseudo-element-case': 'lower',
'selector-pseudo-element-colon-notation': 'double',
'selector-type-case': 'lower',
// Selector list
'selector-list-comma-newline-after': 'always-multi-line',
'selector-list-comma-newline-before': 'never-multi-line',
'selector-list-comma-space-after': 'always-single-line',
'selector-list-comma-space-before': 'never',
// Rule
// 'rule-empty-line-before': null,
// Media feature
'media-feature-colon-space-after': 'always',
'media-feature-colon-space-before': 'never',
'media-feature-name-case': 'lower',
'media-feature-parentheses-space-inside': 'never',
'media-feature-range-operator-space-after': 'always',
'media-feature-range-operator-space-before': 'always',
// Media query list
// 'media-query-list-comma-newline-after': null, // TODO: study later
// 'media-query-list-comma-newline-before': null, // TODO: study later
'media-query-list-comma-space-after': 'always-single-line',
'media-query-list-comma-space-before': 'never',
// At-rule
// 'at-rule-empty-line-before': null,
'at-rule-name-case': 'lower',
// 'at-rule-name-newline-after': null,
'at-rule-name-space-after': 'always-single-line',
'at-rule-semicolon-newline-after': 'always',
'at-rule-semicolon-space-before': 'never',
// Comment
// 'comment-empty-line-before': null,
'comment-whitespace-inside': 'always',
// General / Sheet
'indentation': 'tab',
'linebreaks': 'unix',
// 'max-empty-lines': null,
// 'max-line-length': null,
'no-eol-whitespace': true,
'no-missing-end-of-source-newline': true,
// 'no-empty-first-line': null,
'unicode-bom': 'never',
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# Color
'color-hex-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 十六进制颜色值一律小写。'color-hex-length': 'short'
ℹ️ (opens new window) 🛠️ —— 十六进制颜色值应尽可能简写(#aabbcc
→#abc
)。
# Font family
'font-family-name-quotes': 'always-where-recommended'
ℹ️ (opens new window) —— 字体名在 CSS 规范推荐的场景 (opens new window) 下需要加引号。
# Font weight
'font-weight-notation': 'named-where-possible'
ℹ️ (opens new window) —— 字重属性值优先使用关键字(bold
、normal
等),而不是数值(700
、400
等)。
# Function
'function-comma-newline-after': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果函数写成多行,需要在逗号后换行。'function-comma-newline-before': 'never-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果函数写成多行,不能在逗号前换行。'function-comma-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果函数写成单行,需要在逗号后加空格。'function-comma-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 函数中的逗号前不加空格。'function-max-empty-lines': 0
ℹ️ (opens new window) 🛠️ —— 限制函数中最多可以出现多少空行。'function-name-case': 'lower'
ℹ️ (opens new window) 🛠️ ——函数名一律小写。'function-parentheses-newline-inside': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果函数写成多行,需要在括号内侧换行。'function-parentheses-space-inside': 'never-single-line'
ℹ️ (opens new window) 🛠️ —— 函数括号的内侧不加空格。'function-url-quotes': 'always'
ℹ️ (opens new window) ——url()
的值必须加引号。'function-whitespace-after': 'always'
ℹ️ (opens new window) 🛠️ —— 需要在函数调用之后加空格。
# Number
'number-leading-zero': 'always'
ℹ️ (opens new window) 🛠️ —— 小数点前的零不可省略。'number-no-trailing-zeros': true
ℹ️ (opens new window) 🛠️ —— 小数部分结尾的零应去除。
# String
'string-quotes': 'single'
ℹ️ (opens new window) 🛠️ —— 引号一律使用单引号。
# Length
'length-zero-no-unit': true
ℹ️ (opens new window) 🛠️ —— 当长度值为零时,应省略单位。
# Unit
'unit-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 单位一律小写。
# Value
'value-keyword-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 属性值关键字一律小写。
# Value list
'value-list-comma-newline-after': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果属性值列表写成多行,需要在逗号后换行。'value-list-comma-newline-before': 'never-multi-line'
ℹ️ (opens new window) —— 如果属性值列表写成多行,不能在逗号前换行。'value-list-comma-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果属性值列表写成多行,需要在逗号后加空格。'value-list-comma-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 属性值列表中的逗号前不加空格。'value-list-max-empty-lines': 0
ℹ️ (opens new window) 🛠️ —— 限制属性值列表中最多可以出现多少空行。
# Custom property
ℹ️ (opens new window) 🛠️ —— [不限] 是否在自定义属性声明之上插入空行。'custom-property-empty-line-before': '...'
# Property
'property-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 属性名一律小写。
# Declaration
'declaration-bang-space-after': 'never'
ℹ️ (opens new window) 🛠️ ——!important
的感叹号之后不加空格。'declaration-bang-space-before': 'always'
ℹ️ (opens new window) 🛠️ ——!important
的感叹号之前加空格。'declaration-colon-newline-after': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果一条声明写成多行,需要在冒号后换行。'declaration-colon-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果一条声明写成单行,需要在冒号之后加空格。'declaration-colon-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 声明中的冒号之前不加空格。ℹ️ (opens new window) 🛠️ —— [不限] 是否在每条声明之上插入空行。'declaration-empty-line-before': '...'
# Declaration block
'declaration-block-semicolon-newline-after': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果声明块写成多行,需要在分号后换行。'declaration-block-semicolon-newline-before': 'never-multi-line'
ℹ️ (opens new window) —— 如果声明块写成多行,不能在分号前换行。'declaration-block-semicolon-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果声明块写成单行,需要在分号后加空格。'declaration-block-semicolon-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 如果声明块写成单行,分号后不加空格。'declaration-block-trailing-semicolon': 'always'
ℹ️ (opens new window) 🛠️ —— 声明块的最后一条声明结尾也需要写分号。
# Block
ℹ️ (opens new window) 🛠️ —— [不限] 块结尾的大括号内侧是否加空行。'block-closing-brace-empty-line-before': '...'
'block-closing-brace-newline-after': ['always', { ignoreAtRules: ['if', 'else'] }]
ℹ️ (opens new window) 🛠️ —— 需要在块结尾的大括号之后换行。不过,允许@if () {} @else {}
这种结构中的块结尾大括号之后不换行。'block-closing-brace-newline-before': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果块写成多行,需要在块结尾的大括号之前换行。ℹ️ (opens new window) —— [不适用] 此规则无法设置为理想效果:是否在块结尾的大括号之后加空格。'block-closing-brace-space-after': '...'
'block-closing-brace-space-before': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果块写成单行,需要在块结尾的大括号之前加空格。'block-opening-brace-newline-after': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果块写成多行,需要在块开头的大括号之后换行。ℹ️ (opens new window) 🛠️ —— [不适用] 此规则无法设置为理想效果:是否在块开头的大括号之前换行。'block-opening-brace-newline-before': '...'
'block-opening-brace-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果块写成单行,需要在块开头的大括号之后加空格。'block-opening-brace-space-before': 'always'
ℹ️ (opens new window) 🛠️ —— 需要在块开头的大括号之前加空格。
# Selector
'selector-attribute-brackets-space-inside': 'never'
ℹ️ (opens new window) 🛠️ —— 属性选择符的中括号内层不加空格。'selector-attribute-operator-space-after': 'never'
ℹ️ (opens new window) 🛠️ —— 属性运算符之后不加空格。'selector-attribute-operator-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 属性运算符之前不加空格。'selector-attribute-quotes': 'always'
ℹ️ (opens new window) —— 属性运算符右侧的属性值需要加引号。'selector-combinator-space-after': 'always'
ℹ️ (opens new window) 🛠️ —— 选择符中的组合符之后需要加空格。'selector-combinator-space-before': 'always'
ℹ️ (opens new window) 🛠️ —— 选择符中的组合符之前需要加空格。'selector-descendant-combinator-no-non-space': true
ℹ️ (opens new window) 🛠️ —— 后代选择符必须是空格,不能是换行。'selector-pseudo-class-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 伪类一律小写。'selector-pseudo-class-parentheses-space-inside': 'never'
ℹ️ (opens new window) 🛠️ —— 伪类选择符括号内侧不加空格。'selector-pseudo-element-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 伪元素一律小写。'selector-pseudo-element-colon-notation': 'double'
ℹ️ (opens new window) 🛠️ —— 伪元素采用双冒号写法。'selector-type-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 类型选择符一律小写。
# Selector list
'selector-list-comma-newline-after': 'always-multi-line'
ℹ️ (opens new window) 🛠️ —— 如果选择符列表写成多行,需要在逗号之后换行。'selector-list-comma-newline-before': 'never-multi-line'
ℹ️ (opens new window) 🛠️ —— 选择符列表的逗号之前不能换行。'selector-list-comma-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 需要在选择符列表的逗号之后加空格。'selector-list-comma-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 选择符列表的逗号之后不加空格。
# Rule
ℹ️ (opens new window) 🛠️ —— [不限] 每条规则之前是否加空行。'rule-empty-line-before': '...'
# Media feature
'media-feature-colon-space-after': 'always'
ℹ️ (opens new window) 🛠️ —— 媒体查询特性的冒号后加空格。'media-feature-colon-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 媒体查询特性的冒号前不加空格。'media-feature-name-case': 'lower'
ℹ️ (opens new window) 🛠️ —— 媒体查询中的特性名为小写。'media-feature-parentheses-space-inside': 'never'
ℹ️ (opens new window) 🛠️ —— 媒体查询的括号内侧不加空格。'media-feature-range-operator-space-after': 'always'
ℹ️ (opens new window) 🛠️ —— 媒体查询特性的比较运算符之后加空格。'media-feature-range-operator-space-before': 'always'
ℹ️ (opens new window) 🛠️ —— 媒体查询特性的比较运算符之前加空格。
# Media query list
ℹ️ (opens new window) 🛠️ —— [不限] 媒体查询列表的逗号之后是否换行。'media-query-list-comma-newline-after': '...'
ℹ️ (opens new window) —— [不限] 媒体查询列表的逗号之前是否换行。'media-query-list-comma-newline-before': '...'
'media-query-list-comma-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果媒体查询列表写成单行,需要在逗号之后加空格。'media-query-list-comma-space-before': 'never'
ℹ️ (opens new window) 🛠️ —— 媒体查询列表的逗号之前不加空格。
# At-rule
ℹ️ (opens new window) 🛠️ —— [不限]'at-rule-empty-line-before': '...'
@
规则之前是否加空行。'at-rule-name-case': 'lower'
ℹ️ (opens new window) 🛠️ ——@
规则名一律小写。ℹ️ (opens new window) —— [不限]'at-rule-name-newline-after': '...'
@
规则名之后是否换行。'at-rule-name-space-after': 'always-single-line'
ℹ️ (opens new window) 🛠️ —— 如果@
规则写成单行,需要在规则名之后加空格。'at-rule-semicolon-newline-after': 'always'
ℹ️ (opens new window) 🛠️ ——@
规则的分号之后需要换行。'at-rule-semicolon-space-before': 'never'
ℹ️ (opens new window) ——@
规则的分号之前不加空格。
# Comment
ℹ️ (opens new window) 🛠️ —— [不限] 注释之前是否加空行。'comment-empty-line-before': '...'
'comment-whitespace-inside': 'always'
ℹ️ (opens new window) 🛠️ —— 注释(/* ... */
)内层加空格。
# General / Sheet
'indentation': 'tab'
ℹ️ (opens new window) 🛠️ —— 缩进为一个 tab。'linebreaks': 'unix'
ℹ️ (opens new window) 🛠️ —— 换行采用 LF(UNIX 风格)。ℹ️ (opens new window) 🛠️ —— [不限] 最多多少个连续空行。'max-empty-lines': 999
ℹ️ (opens new window) —— [不限] 每行的最大长度。'max-line-length': 999
'no-eol-whitespace': true
ℹ️ (opens new window) 🛠️ —— 行末不留空格。'no-missing-end-of-source-newline': true
ℹ️ (opens new window) 🛠️ —— 文件末尾至少要保留一个换行符。ℹ️ (opens new window) 🛠️ —— [不限] 文件开头是否为空行。'no-empty-first-line': true
'unicode-bom': 'never'
ℹ️ (opens new window) —— 文件不允许出现 BOM 头。
上次更新: 2021-05-10 17:15:54