index.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. 'use strict';
  2. module.exports = {
  3. extends: 'stylelint-config-recommended',
  4. rules: {
  5. 'alpha-value-notation': [
  6. 'percentage',
  7. {
  8. exceptProperties: ['opacity'],
  9. },
  10. ],
  11. 'at-rule-empty-line-before': [
  12. 'always',
  13. {
  14. except: ['blockless-after-same-name-blockless', 'first-nested'],
  15. ignore: ['after-comment'],
  16. },
  17. ],
  18. 'at-rule-name-case': 'lower',
  19. 'at-rule-name-space-after': 'always-single-line',
  20. 'at-rule-no-vendor-prefix': true,
  21. 'at-rule-semicolon-newline-after': 'always',
  22. 'block-closing-brace-empty-line-before': 'never',
  23. 'block-closing-brace-newline-after': 'always',
  24. 'block-closing-brace-newline-before': 'always-multi-line',
  25. 'block-closing-brace-space-before': 'always-single-line',
  26. 'block-opening-brace-newline-after': 'always-multi-line',
  27. 'block-opening-brace-space-after': 'always-single-line',
  28. 'block-opening-brace-space-before': 'always',
  29. 'color-function-notation': 'modern',
  30. 'color-hex-case': 'lower',
  31. 'color-hex-length': 'short',
  32. 'comment-empty-line-before': [
  33. 'always',
  34. {
  35. except: ['first-nested'],
  36. ignore: ['stylelint-commands'],
  37. },
  38. ],
  39. 'comment-whitespace-inside': 'always',
  40. 'custom-property-empty-line-before': [
  41. 'always',
  42. {
  43. except: ['after-custom-property', 'first-nested'],
  44. ignore: ['after-comment', 'inside-single-line-block'],
  45. },
  46. ],
  47. 'custom-media-pattern': [
  48. '^([a-z][a-z0-9]*)(-[a-z0-9]+)*$',
  49. {
  50. message: 'Expected custom media query name to be kebab-case',
  51. },
  52. ],
  53. 'custom-property-pattern': [
  54. '^([a-z][a-z0-9]*)(-[a-z0-9]+)*$',
  55. {
  56. message: 'Expected custom property name to be kebab-case',
  57. },
  58. ],
  59. 'declaration-bang-space-after': 'never',
  60. 'declaration-bang-space-before': 'always',
  61. 'declaration-block-semicolon-newline-after': 'always-multi-line',
  62. 'declaration-block-semicolon-space-after': 'always-single-line',
  63. 'declaration-block-semicolon-space-before': 'never',
  64. 'declaration-block-single-line-max-declarations': 1,
  65. 'declaration-block-trailing-semicolon': 'always',
  66. 'declaration-block-no-redundant-longhand-properties': true,
  67. 'declaration-colon-newline-after': 'always-multi-line',
  68. 'declaration-colon-space-after': 'always-single-line',
  69. 'declaration-colon-space-before': 'never',
  70. 'declaration-empty-line-before': [
  71. 'always',
  72. {
  73. except: ['after-declaration', 'first-nested'],
  74. ignore: ['after-comment', 'inside-single-line-block'],
  75. },
  76. ],
  77. 'font-family-name-quotes': 'always-where-recommended',
  78. 'function-comma-newline-after': 'always-multi-line',
  79. 'function-comma-space-after': 'always-single-line',
  80. 'function-comma-space-before': 'never',
  81. 'function-max-empty-lines': 0,
  82. 'function-name-case': 'lower',
  83. 'function-parentheses-newline-inside': 'always-multi-line',
  84. 'function-parentheses-space-inside': 'never-single-line',
  85. 'function-url-quotes': 'always',
  86. 'function-whitespace-after': 'always',
  87. 'hue-degree-notation': 'angle',
  88. indentation: 2,
  89. 'keyframes-name-pattern': [
  90. '^([a-z][a-z0-9]*)(-[a-z0-9]+)*$',
  91. {
  92. message: 'Expected keyframe name to be kebab-case',
  93. },
  94. ],
  95. 'length-zero-no-unit': true,
  96. 'max-empty-lines': 1,
  97. 'max-line-length': 120,
  98. 'media-feature-colon-space-after': 'always',
  99. 'media-feature-colon-space-before': 'never',
  100. 'media-feature-name-case': 'lower',
  101. 'media-feature-name-no-vendor-prefix': true,
  102. 'media-feature-parentheses-space-inside': 'never',
  103. 'media-feature-range-operator-space-after': 'always',
  104. 'media-feature-range-operator-space-before': 'always',
  105. 'media-query-list-comma-newline-after': 'always-multi-line',
  106. 'media-query-list-comma-space-after': 'always-single-line',
  107. 'media-query-list-comma-space-before': 'never',
  108. 'no-empty-first-line': true,
  109. 'no-eol-whitespace': true,
  110. 'no-irregular-whitespace': true,
  111. 'no-missing-end-of-source-newline': true,
  112. 'number-leading-zero': 'always',
  113. 'number-max-precision': 4,
  114. 'number-no-trailing-zeros': true,
  115. 'property-case': 'lower',
  116. 'property-no-vendor-prefix': true,
  117. 'rule-empty-line-before': [
  118. 'always-multi-line',
  119. {
  120. except: ['first-nested'],
  121. ignore: ['after-comment'],
  122. },
  123. ],
  124. 'selector-attribute-brackets-space-inside': 'never',
  125. 'selector-attribute-operator-space-after': 'never',
  126. 'selector-attribute-operator-space-before': 'never',
  127. 'selector-attribute-quotes': 'always',
  128. 'selector-class-pattern': [
  129. '^([a-z][a-z0-9]*)(-[a-z0-9]+)*$',
  130. {
  131. message: 'Expected class selector to be kebab-case',
  132. },
  133. ],
  134. 'selector-combinator-space-after': 'always',
  135. 'selector-combinator-space-before': 'always',
  136. 'selector-descendant-combinator-no-non-space': true,
  137. 'selector-id-pattern': [
  138. '^([a-z][a-z0-9]*)(-[a-z0-9]+)*$',
  139. {
  140. message: 'Expected id selector to be kebab-case',
  141. },
  142. ],
  143. 'selector-list-comma-newline-after': 'always',
  144. 'selector-list-comma-space-before': 'never',
  145. 'selector-max-empty-lines': 0,
  146. 'selector-no-vendor-prefix': true,
  147. 'selector-pseudo-class-case': 'lower',
  148. 'selector-pseudo-class-parentheses-space-inside': 'never',
  149. 'selector-pseudo-element-case': 'lower',
  150. 'selector-pseudo-element-colon-notation': 'double',
  151. 'selector-type-case': 'lower',
  152. 'shorthand-property-no-redundant-values': true,
  153. 'string-quotes': 'double',
  154. 'unit-case': 'lower',
  155. 'value-keyword-case': 'lower',
  156. 'value-list-comma-newline-after': 'always-multi-line',
  157. 'value-list-comma-space-after': 'always-single-line',
  158. 'value-list-comma-space-before': 'never',
  159. 'value-list-max-empty-lines': 0,
  160. 'value-no-vendor-prefix': true,
  161. },
  162. };