gitea源码

stylelint.config.ts 7.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import {fileURLToPath} from 'node:url';
  2. import type {Config} from 'stylelint';
  3. const cssVarFiles = [
  4. fileURLToPath(new URL('web_src/css/base.css', import.meta.url)),
  5. fileURLToPath(new URL('web_src/css/themes/theme-gitea-light.css', import.meta.url)),
  6. fileURLToPath(new URL('web_src/css/themes/theme-gitea-dark.css', import.meta.url)),
  7. ];
  8. export default {
  9. extends: 'stylelint-config-recommended',
  10. reportUnscopedDisables: true,
  11. reportNeedlessDisables: true,
  12. reportInvalidScopeDisables: true,
  13. plugins: [
  14. 'stylelint-declaration-strict-value',
  15. 'stylelint-declaration-block-no-ignored-properties',
  16. 'stylelint-value-no-unknown-custom-properties',
  17. '@stylistic/stylelint-plugin',
  18. ],
  19. ignoreFiles: [
  20. '**/*.go',
  21. '/web_src/fomantic',
  22. ],
  23. overrides: [
  24. {
  25. files: ['**/chroma/*', '**/codemirror/*', '**/standalone/*', '**/console.css', 'font_i18n.css'],
  26. rules: {
  27. 'scale-unlimited/declaration-strict-value': null,
  28. },
  29. },
  30. {
  31. files: ['**/chroma/*', '**/codemirror/*'],
  32. rules: {
  33. 'block-no-empty': null,
  34. },
  35. },
  36. {
  37. files: ['**/*.vue'],
  38. customSyntax: 'postcss-html',
  39. },
  40. ],
  41. rules: {
  42. '@stylistic/at-rule-name-case': null,
  43. '@stylistic/at-rule-name-newline-after': null,
  44. '@stylistic/at-rule-name-space-after': null,
  45. '@stylistic/at-rule-semicolon-newline-after': null,
  46. '@stylistic/at-rule-semicolon-space-before': null,
  47. '@stylistic/block-closing-brace-empty-line-before': null,
  48. '@stylistic/block-closing-brace-newline-after': null,
  49. '@stylistic/block-closing-brace-newline-before': null,
  50. '@stylistic/block-closing-brace-space-after': null,
  51. '@stylistic/block-closing-brace-space-before': null,
  52. '@stylistic/block-opening-brace-newline-after': null,
  53. '@stylistic/block-opening-brace-newline-before': null,
  54. '@stylistic/block-opening-brace-space-after': null,
  55. '@stylistic/block-opening-brace-space-before': 'always',
  56. '@stylistic/color-hex-case': 'lower',
  57. '@stylistic/declaration-bang-space-after': 'never',
  58. '@stylistic/declaration-bang-space-before': null,
  59. '@stylistic/declaration-block-semicolon-newline-after': null,
  60. '@stylistic/declaration-block-semicolon-newline-before': null,
  61. '@stylistic/declaration-block-semicolon-space-after': null,
  62. '@stylistic/declaration-block-semicolon-space-before': 'never',
  63. '@stylistic/declaration-block-trailing-semicolon': null,
  64. '@stylistic/declaration-colon-newline-after': null,
  65. '@stylistic/declaration-colon-space-after': null,
  66. '@stylistic/declaration-colon-space-before': 'never',
  67. '@stylistic/function-comma-newline-after': null,
  68. '@stylistic/function-comma-newline-before': null,
  69. '@stylistic/function-comma-space-after': null,
  70. '@stylistic/function-comma-space-before': null,
  71. '@stylistic/function-max-empty-lines': 0,
  72. '@stylistic/function-parentheses-newline-inside': null,
  73. '@stylistic/function-parentheses-space-inside': null,
  74. '@stylistic/function-whitespace-after': null,
  75. '@stylistic/indentation': 2,
  76. '@stylistic/linebreaks': null,
  77. '@stylistic/max-empty-lines': 1,
  78. '@stylistic/max-line-length': null,
  79. '@stylistic/media-feature-colon-space-after': null,
  80. '@stylistic/media-feature-colon-space-before': 'never',
  81. '@stylistic/media-feature-name-case': null,
  82. '@stylistic/media-feature-parentheses-space-inside': null,
  83. '@stylistic/media-feature-range-operator-space-after': 'always',
  84. '@stylistic/media-feature-range-operator-space-before': 'always',
  85. '@stylistic/media-query-list-comma-newline-after': null,
  86. '@stylistic/media-query-list-comma-newline-before': null,
  87. '@stylistic/media-query-list-comma-space-after': null,
  88. '@stylistic/media-query-list-comma-space-before': null,
  89. '@stylistic/named-grid-areas-alignment': null,
  90. '@stylistic/no-empty-first-line': null,
  91. '@stylistic/no-eol-whitespace': true,
  92. '@stylistic/no-extra-semicolons': true,
  93. '@stylistic/no-missing-end-of-source-newline': null,
  94. '@stylistic/number-leading-zero': null,
  95. '@stylistic/number-no-trailing-zeros': null,
  96. '@stylistic/property-case': 'lower',
  97. '@stylistic/selector-attribute-brackets-space-inside': null,
  98. '@stylistic/selector-attribute-operator-space-after': null,
  99. '@stylistic/selector-attribute-operator-space-before': null,
  100. '@stylistic/selector-combinator-space-after': null,
  101. '@stylistic/selector-combinator-space-before': null,
  102. '@stylistic/selector-descendant-combinator-no-non-space': null,
  103. '@stylistic/selector-list-comma-newline-after': null,
  104. '@stylistic/selector-list-comma-newline-before': null,
  105. '@stylistic/selector-list-comma-space-after': 'always-single-line',
  106. '@stylistic/selector-list-comma-space-before': 'never-single-line',
  107. '@stylistic/selector-max-empty-lines': 0,
  108. '@stylistic/selector-pseudo-class-case': 'lower',
  109. '@stylistic/selector-pseudo-class-parentheses-space-inside': 'never',
  110. '@stylistic/selector-pseudo-element-case': 'lower',
  111. '@stylistic/string-quotes': 'double',
  112. '@stylistic/unicode-bom': null,
  113. '@stylistic/unit-case': 'lower',
  114. '@stylistic/value-list-comma-newline-after': null,
  115. '@stylistic/value-list-comma-newline-before': null,
  116. '@stylistic/value-list-comma-space-after': null,
  117. '@stylistic/value-list-comma-space-before': null,
  118. '@stylistic/value-list-max-empty-lines': 0,
  119. 'at-rule-no-unknown': [true, {ignoreAtRules: ['tailwind']}],
  120. 'at-rule-no-vendor-prefix': true,
  121. 'csstools/value-no-unknown-custom-properties': [true, {importFrom: cssVarFiles}],
  122. 'declaration-block-no-duplicate-properties': [true, {ignore: ['consecutive-duplicates-with-different-values']}],
  123. 'declaration-block-no-redundant-longhand-properties': [true, {ignoreShorthands: ['flex-flow', 'overflow', 'grid-template']}],
  124. 'declaration-property-unit-disallowed-list': {'line-height': ['em']},
  125. 'declaration-property-value-disallowed-list': {'word-break': ['break-word']},
  126. 'font-family-name-quotes': 'always-where-recommended',
  127. 'function-name-case': 'lower',
  128. 'function-url-quotes': 'always',
  129. 'import-notation': 'string',
  130. 'length-zero-no-unit': [true, {ignore: ['custom-properties'], ignoreFunctions: ['var']}],
  131. 'media-feature-name-no-vendor-prefix': true,
  132. 'no-descending-specificity': null,
  133. 'no-invalid-position-at-import-rule': [true, {ignoreAtRules: ['tailwind']}],
  134. 'no-unknown-animations': null, // disabled until stylelint supports multi-file linting
  135. 'no-unknown-custom-media': null, // disabled until stylelint supports multi-file linting
  136. 'no-unknown-custom-properties': null, // disabled until stylelint supports multi-file linting
  137. 'plugin/declaration-block-no-ignored-properties': true,
  138. 'scale-unlimited/declaration-strict-value': [['/color$/', 'font-weight'], {ignoreValues: '/^(inherit|transparent|unset|initial|currentcolor|none)$/', ignoreFunctions: true, disableFix: true, expandShorthand: true}],
  139. 'selector-attribute-quotes': 'always',
  140. 'selector-no-vendor-prefix': true,
  141. 'selector-pseudo-element-colon-notation': 'double',
  142. 'selector-type-case': 'lower',
  143. 'selector-type-no-unknown': [true, {ignore: ['custom-elements']}],
  144. 'shorthand-property-no-redundant-values': true,
  145. 'value-no-vendor-prefix': [true, {ignoreValues: ['box', 'inline-box']}],
  146. },
  147. } satisfies Config;