custom-config.ts 3.9 KB

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