custom-config.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import type { Linter } from 'eslint';
  2. const restrictedImportIgnores = [
  3. '**/vite.config.mts',
  4. '**/tailwind.config.mjs',
  5. '**/postcss.config.mjs',
  6. ];
  7. const customConfig: Linter.Config[] = [
  8. // shadcn-ui 内部组件是自动生成的,不做太多限制
  9. {
  10. files: ['packages/@core/ui-kit/shadcn-ui/**/**'],
  11. rules: {
  12. 'vue/require-default-prop': 'off',
  13. },
  14. },
  15. {
  16. files: [
  17. 'apps/**/**',
  18. 'packages/effects/**/**',
  19. 'packages/utils/**/**',
  20. 'packages/types/**/**',
  21. 'packages/locales/**/**',
  22. ],
  23. ignores: restrictedImportIgnores,
  24. rules: {
  25. 'perfectionist/sort-interfaces': 'off',
  26. 'perfectionist/sort-objects': 'off',
  27. },
  28. },
  29. {
  30. files: ['**/**.vue'],
  31. ignores: restrictedImportIgnores,
  32. rules: {
  33. 'perfectionist/sort-objects': 'off',
  34. },
  35. },
  36. {
  37. // apps内部的一些基础规则
  38. files: ['apps/**/**'],
  39. ignores: restrictedImportIgnores,
  40. rules: {
  41. 'no-restricted-imports': [
  42. 'error',
  43. {
  44. patterns: [
  45. {
  46. group: ['#/api/*'],
  47. message:
  48. 'The #/api package cannot be imported, please use the @core package itself',
  49. },
  50. {
  51. group: ['#/layouts/*'],
  52. message:
  53. 'The #/layouts package cannot be imported, please use the @core package itself',
  54. },
  55. {
  56. group: ['#/locales/*'],
  57. message:
  58. 'The #/locales package cannot be imported, please use the @core package itself',
  59. },
  60. {
  61. group: ['#/stores/*'],
  62. message:
  63. 'The #/stores package cannot be imported, please use the @core package itself',
  64. },
  65. ],
  66. },
  67. ],
  68. 'perfectionist/sort-interfaces': 'off',
  69. },
  70. },
  71. {
  72. // @core内部组件,不能引入@vben/* 里面的包
  73. files: ['packages/@core/**/**'],
  74. ignores: restrictedImportIgnores,
  75. rules: {
  76. 'no-restricted-imports': [
  77. 'error',
  78. {
  79. patterns: [
  80. {
  81. group: ['@vben/*'],
  82. message:
  83. 'The @core package cannot import the @vben package, please use the @core package itself',
  84. },
  85. ],
  86. },
  87. ],
  88. },
  89. },
  90. {
  91. // @core/shared内部组件,不能引入@vben/* 或者 @vben-core/* 里面的包
  92. files: ['packages/@core/base/**/**'],
  93. ignores: restrictedImportIgnores,
  94. rules: {
  95. 'no-restricted-imports': [
  96. 'error',
  97. {
  98. patterns: [
  99. {
  100. group: ['@vben/*', '@vben-core/*'],
  101. message:
  102. 'The @vben-core/shared package cannot import the @vben package, please use the @core/shared package itself',
  103. },
  104. ],
  105. },
  106. ],
  107. },
  108. },
  109. {
  110. // 不能引入@vben/*里面的包
  111. files: [
  112. 'packages/types/**/**',
  113. 'packages/utils/**/**',
  114. 'packages/icons/**/**',
  115. 'packages/constants/**/**',
  116. 'packages/styles/**/**',
  117. 'packages/stores/**/**',
  118. 'packages/preferences/**/**',
  119. 'packages/locales/**/**',
  120. ],
  121. ignores: restrictedImportIgnores,
  122. rules: {
  123. 'no-restricted-imports': [
  124. 'error',
  125. {
  126. patterns: [
  127. {
  128. group: ['@vben/*'],
  129. message:
  130. 'The @vben package cannot be imported, please use the @core package itself',
  131. },
  132. ],
  133. },
  134. ],
  135. },
  136. },
  137. // 后端模拟代码,不需要太多规则
  138. {
  139. files: ['apps/backend-mock/**/**', 'docs/**/**'],
  140. rules: {
  141. '@typescript-eslint/no-extraneous-class': 'off',
  142. 'n/no-extraneous-import': 'off',
  143. 'n/prefer-global/buffer': 'off',
  144. 'n/prefer-global/process': 'off',
  145. 'no-console': 'off',
  146. 'unicorn/prefer-module': 'off',
  147. },
  148. },
  149. {
  150. files: ['**/**/playwright.config.ts'],
  151. rules: {
  152. 'n/prefer-global/buffer': 'off',
  153. 'n/prefer-global/process': 'off',
  154. 'no-console': 'off',
  155. },
  156. },
  157. {
  158. files: ['internal/**/**', 'scripts/**/**'],
  159. rules: {
  160. 'no-console': 'off',
  161. },
  162. },
  163. ];
  164. export { customConfig };