custom-config.ts 3.7 KB

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