custom-config.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. // apps内部的一些基础规则
  31. files: ['apps/**/**'],
  32. ignores: restrictedImportIgnores,
  33. rules: {
  34. 'no-restricted-imports': [
  35. 'error',
  36. {
  37. patterns: [
  38. {
  39. group: ['#/api/*'],
  40. message:
  41. 'The #/api package cannot be imported, please use the @core package itself',
  42. },
  43. {
  44. group: ['#/layouts/*'],
  45. message:
  46. 'The #/layouts package cannot be imported, please use the @core package itself',
  47. },
  48. {
  49. group: ['#/locales/*'],
  50. message:
  51. 'The #/locales package cannot be imported, please use the @core package itself',
  52. },
  53. {
  54. group: ['#/stores/*'],
  55. message:
  56. 'The #/stores package cannot be imported, please use the @core package itself',
  57. },
  58. ],
  59. },
  60. ],
  61. 'perfectionist/sort-interfaces': 'off',
  62. },
  63. },
  64. {
  65. // @core内部组件,不能引入@vben/* 里面的包
  66. files: ['packages/@core/**/**'],
  67. ignores: restrictedImportIgnores,
  68. rules: {
  69. 'no-restricted-imports': [
  70. 'error',
  71. {
  72. patterns: [
  73. {
  74. group: ['@vben/*'],
  75. message:
  76. 'The @core package cannot import the @vben package, please use the @core package itself',
  77. },
  78. ],
  79. },
  80. ],
  81. },
  82. },
  83. {
  84. // @core/shared内部组件,不能引入@vben/* 或者 @vben-core/* 里面的包
  85. files: ['packages/@core/base/**/**'],
  86. ignores: restrictedImportIgnores,
  87. rules: {
  88. 'no-restricted-imports': [
  89. 'error',
  90. {
  91. patterns: [
  92. {
  93. group: ['@vben/*', '@vben-core/*'],
  94. message:
  95. 'The @vben-core/shared package cannot import the @vben package, please use the @core/shared package itself',
  96. },
  97. ],
  98. },
  99. ],
  100. },
  101. },
  102. {
  103. // 不能引入@vben/*里面的包
  104. files: [
  105. 'packages/types/**/**',
  106. 'packages/utils/**/**',
  107. 'packages/icons/**/**',
  108. 'packages/constants/**/**',
  109. 'packages/styles/**/**',
  110. 'packages/stores/**/**',
  111. 'packages/preferences/**/**',
  112. 'packages/locales/**/**',
  113. ],
  114. ignores: restrictedImportIgnores,
  115. rules: {
  116. 'no-restricted-imports': [
  117. 'error',
  118. {
  119. patterns: [
  120. {
  121. group: ['@vben/*'],
  122. message:
  123. 'The @vben package cannot be imported, please use the @core package itself',
  124. },
  125. ],
  126. },
  127. ],
  128. },
  129. },
  130. // 后端模拟代码,不需要太多规则
  131. {
  132. files: ['apps/backend-mock/**/**', 'docs/**/**'],
  133. rules: {
  134. '@typescript-eslint/no-extraneous-class': 'off',
  135. 'n/no-extraneous-import': 'off',
  136. 'n/prefer-global/buffer': 'off',
  137. 'n/prefer-global/process': 'off',
  138. 'no-console': 'off',
  139. 'unicorn/prefer-module': 'off',
  140. },
  141. },
  142. {
  143. files: ['**/**/playwright.config.ts'],
  144. rules: {
  145. 'n/prefer-global/buffer': 'off',
  146. 'n/prefer-global/process': 'off',
  147. 'no-console': 'off',
  148. },
  149. },
  150. {
  151. files: ['internal/**/**', 'scripts/**/**'],
  152. rules: {
  153. 'no-console': 'off',
  154. },
  155. },
  156. ];
  157. export { customConfig };