custom-config.ts 3.7 KB

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