参考 Google Style

    1. {
    2. 'rules': {
    3. // Color
    4. // 禁止使用无效的16进制颜色
    5. 'color-no-invalid-hex': true,
    6. // Font Family
    7. // 禁止重复的字体声明
    8. 'font-family-no-duplicate-names': true,
    9. // 字体声明必须含有通用字体
    10. 'font-family-no-missing-generic-family-keyword': true,
    11. // Function
    12. // 在calc函数中运算符两端需要添加空格
    13. 'function-calc-no-unspaced-operator': true,
    14. // 强制渐变背景的direction属性需要添加‘to’关键字
    15. 'function-linear-gradient-no-nonstandard-direction': true,
    16. // String
    17. // 禁止字符串内换行
    18. 'string-no-newline': true,
    19. // Units
    20. // 禁止无法识别的单位
    21. 'unit-no-unknown': true,
    22. // Property
    23. // 禁止无法识别的属性
    24. 'property-no-unknown': true,
    25. // Keyframe
    26. // 禁止在keyframe的属性值中添加!important
    27. 'keyframe-declaration-no-important': true,
    28. // Declaration block
    29. // 禁止重复的属性声明
    30. 'declaration-block-no-duplicate-properties': true,
    31. // 禁止简略表达属性覆盖
    32. 'declaration-block-no-shorthand-property-overrides': true,
    33. // Block
    34. // 禁止声明空的选择器
    35. 'block-no-empty': true,
    36. // Selector
    37. // 禁止无法识别的伪类值 伪类:元素当前所具有的特性
    38. 'selector-pseudo-class-no-unknown': true,
    39. // 禁止无法识别的为元素值 伪元素:对元素中的特定内容进行操作 ::before ::after ::selection ...
    40. 'selector-pseudo-element-no-unknown': true,
    41. // 禁止无法识别的选择器
    42. 'selector-type-no-unknown': [true, {
    43. ignoreNamespaces: ['/^app-/']
    44. }],
    45. // Media feature
    46. // 禁止无法识别的media属性值
    47. 'media-feature-name-no-unknown': true,
    48. // At-rule
    49. // 禁止无法识别的@语法
    50. 'at-rule-no-unknown': true,
    51. // 'at-rule-no-unknown': {
    52. // 'ignoreAtRules': ['else']
    53. // },
    54. // Comment
    55. 'comment-no-empty': true,
    56. // General / Sheet
    57. // 禁止高权重的声明在低权重的声明之前
    58. 'no-descending-specificity': true,
    59. // 禁止重复import
    60. 'no-duplicate-at-import-rules': true,
    61. // 禁止重复声明选择器
    62. 'no-duplicate-selectors': true,
    63. // 禁止使用空的源文件
    64. 'no-empty-source': true,
    65. // 禁止额外的分号
    66. 'no-extra-semicolons': true,
    67. // 禁止无效的注释 //
    68. 'no-invalid-double-slash-comments': true,
    69. // Color
    70. // 禁止使用命名的颜色: red, blue...
    71. // 'color-named': 'always-where-possible',
    72. // 禁止16进制颜色: #FFF
    73. // 'color-no-hex': 'true',
    74. // Function
    75. // 函数黑名单
    76. // 'function-blacklist': [],
    77. // 函数白名单
    78. // 'function-whitelist': [],
    79. // 禁止scheme relative url
    80. // 'function-url-no-scheme-relative': true,
    81. // url黑名单
    82. // 'function-url-scheme-blacklist': [],
    83. // url白名单
    84. // 'function-url-scheme-whitelist': ['/^http/'],
    85. // Number
    86. // 数字精确到小数点后三位
    87. 'number-max-precision': 3,
    88. // 最小时间
    89. 'time-min-milliseconds': 100,
    90. // Unit
    91. // 'unit-blacklist': [],
    92. // 'unit-whitelist': [],
    93. // Shorthand property
    94. // 禁止简写冗余
    95. 'shorthand-property-no-redundant-values': true,
    96. // Value
    97. // 不需要添加额外的前缀
    98. 'value-no-vendor-prefix': true,
    99. // Custom property
    100. // 自定义属性命名规则
    101. // 'custom-property-pattern': '',
    102. // Property
    103. // 'property-blacklist': [],
    104. 'property-no-vendor-prefix': true,
    105. // 'property-whitelist': [],
    106. // Declaration
    107. // 如果可以简写的话就简写
    108. 'declaration-block-no-redundant-longhand-properties': true,
    109. // 禁止!important声明
    110. 'declaration-no-important': true,
    111. // 'declaration-property-unit-blacklist': {
    112. // '/^animation/': ['s']
    113. // },
    114. // 'declaration-property-unit-whitelist': {
    115. // 'font-size': ['px', 'rem', 'em']
    116. // },
    117. // 'declaration-property-value-blacklist': {
    118. // },
    119. // 'declaration-property-value-whitelist': {
    120. // },
    121. // Declaration block
    122. // 每行允许声明一个属性
    123. 'declaration-block-single-line-max-declarations': 1,
    124. // Selector
    125. // 'selector-attribute-operator-blacklist': [],
    126. // 'selector-attribute-operator-whitelist': [],
    127. // 类名命名规则
    128. // 'selector-class-pattern': '',
    129. // 选择器命名规则
    130. // 'selector-id-pattern': '',
    131. 'selector-max-empty-lines': 0,
    132. 'selector-no-vendor-prefix': true,
    133. 'selector-no-qualifying-type': true,
    134. 'selector-max-id': 1,
    135. // Media feature
    136. 'media-feature-name-no-vendor-prefix': true,
    137. 'at-rule-no-vendor-prefix': true,
    138. // General / Sheet
    139. // 嵌套深度不能超过4
    140. 'max-nesting-depth': 4,
    141. // 禁止无法识别的动画属性值
    142. 'no-unknown-animations': true,
    143. // Stylistic issues
    144. // Color
    145. 'color-hex-case': 'lower',
    146. 'color-hex-length': 'short',
    147. // 'font-family-name-quotes': 'always-unless-keyword',
    148. // Font weight
    149. 'font-weight-notation': 'numeric',
    150. // Function
    151. 'function-comma-newline-after': 'always-multi-line',
    152. 'function-comma-space-after': 'always-single-line',
    153. 'function-comma-space-before': 'never',
    154. 'function-max-empty-lines': 0,
    155. 'function-name-case': 'lower',
    156. 'function-parentheses-newline-inside': 'always-multi-line',
    157. 'function-parentheses-space-inside': 'never-single-line',
    158. 'function-url-quotes': 'never',
    159. 'function-whitespace-after': 'always',
    160. // Number
    161. 'number-leading-zero': 'never',
    162. 'number-no-trailing-zeros': true,
    163. // String
    164. 'string-quotes': 'single',
    165. // Length
    166. 'length-zero-no-unit': true,
    167. // Unit
    168. 'unit-case': 'lower',
    169. // Value
    170. 'value-keyword-case': 'lower',
    171. // Value List
    172. 'value-list-comma-newline-after': 'always-multi-line',
    173. 'value-list-comma-space-after': 'always-single-line',
    174. 'value-list-comma-space-before': 'never',
    175. 'value-list-max-empty-lines': 0,
    176. // Custom property
    177. 'custom-property-empty-line-before': ['always', {
    178. except: [
    179. 'after-custom-property',
    180. 'first-nested',
    181. ],
    182. ignore: [
    183. 'after-comment',
    184. 'inside-single-line-block',
    185. ],
    186. }],
    187. // Property
    188. 'property-case': 'lower',
    189. // Declaration
    190. 'declaration-bang-space-after': 'never',
    191. 'declaration-bang-space-before': 'always',
    192. 'declaration-colon-space-after': 'always-single-line',
    193. 'declaration-colon-space-before': 'never',
    194. 'declaration-block-semicolon-newline-after': 'always',
    195. 'declaration-block-semicolon-newline-before': 'never-multi-line',
    196. 'declaration-block-semicolon-space-after': 'never',
    197. 'declaration-block-semicolon-space-after': 'always-single-line',
    198. 'declaration-block-semicolon-space-before': 'never',
    199. 'declaration-block-trailing-semicolon': 'always',
    200. // Block
    201. 'block-closing-brace-empty-line-before': 'never',
    202. 'block-closing-brace-newline-after': 'always',
    203. 'block-closing-brace-newline-before': 'always-multi-line',
    204. 'block-closing-brace-space-before': 'always-single-line',
    205. 'block-opening-brace-newline-after': 'always-multi-line',
    206. 'block-opening-brace-space-after': 'always-single-line',
    207. 'block-opening-brace-space-before': 'always',
    208. // Selector
    209. 'selector-attribute-brackets-space-inside': 'never',
    210. 'selector-attribute-operator-space-after': 'never',
    211. 'selector-attribute-operator-space-before': 'never',
    212. 'selector-combinator-space-after': 'always',
    213. 'selector-combinator-space-before': 'always',
    214. 'selector-descendant-combinator-no-non-space': true,
    215. 'selector-pseudo-class-case': 'lower',
    216. 'selector-pseudo-class-parentheses-space-inside': 'never',
    217. 'selector-pseudo-element-case': 'lower',
    218. 'selector-pseudo-element-colon-notation': 'double',
    219. 'selector-type-case': 'lower',
    220. 'selector-list-comma-newline-after': 'always',
    221. 'selector-list-comma-space-before': 'never',
    222. 'selector-list-comma-space-after': 'always-single-line',
    223. 'selector-list-comma-space-before': 'never',
    224. // Rule
    225. 'rule-empty-line-before': ['always-multi-line', {
    226. except: ['first-nested'],
    227. ignore: ['after-comment'],
    228. }],
    229. // Media feature
    230. 'media-feature-colon-space-after': 'always',
    231. 'media-feature-colon-space-before': 'never',
    232. 'media-feature-name-case': 'lower',
    233. "media-feature-parentheses-space-inside": 'never',
    234. 'media-feature-range-operator-space-after': 'always',
    235. 'media-feature-range-operator-space-before': 'always',
    236. // Media query list
    237. 'media-query-list-comma-newline-after': 'always-multi-line',
    238. 'media-query-list-comma-space-after': 'always-single-line',
    239. 'media-query-list-comma-space-before': 'never',
    240. // At-rule
    241. 'at-rule-empty-line-before': [ 'always', {
    242. except: [
    243. 'blockless-after-same-name-blockless',
    244. 'first-nested',
    245. ],
    246. ignore: ['after-comment'],
    247. } ],
    248. 'at-rule-name-case': 'lower',
    249. 'at-rule-name-space-after': 'always-single-line',
    250. 'at-rule-semicolon-newline-after': 'always',
    251. 'at-rule-semicolon-space-before': 'never',
    252. // Comment
    253. 'comment-empty-line-before': [ 'always', {
    254. except: ['first-nested'],
    255. ignore: ['stylelint-commands'],
    256. } ],
    257. 'comment-whitespace-inside': 'always',
    258. // General / Sheet
    259. 'indentation': 2,
    260. 'max-empty-lines': 2,
    261. 'no-eol-whitespace': true,
    262. 'no-missing-end-of-source-newline': true,
    263. }
    264. }