custom-config.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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.FlatConfig[] = [
  8. // shadcn-ui 内部组件是自动生成的,不做太多限制
  9. {
  10. files: ['packages/@core/ui-kit/shadcn-ui/**/**'],
  11. rules: {
  12. 'vue/require-default-prop': 'off',
  13. },
  14. },
  15. {
  16. // apps内部的一些基础规则
  17. files: ['apps/**/**'],
  18. ignores: restrictedImportIgnores,
  19. rules: {
  20. 'no-restricted-imports': [
  21. 'error',
  22. {
  23. patterns: [
  24. {
  25. group: ['#/api/*'],
  26. message:
  27. 'The #/api package cannot be imported, please use the @core package itself',
  28. },
  29. {
  30. group: ['#/layouts/*'],
  31. message:
  32. 'The #/layouts package cannot be imported, please use the @core package itself',
  33. },
  34. {
  35. group: ['#/locales/*'],
  36. message:
  37. 'The #/locales package cannot be imported, please use the @core package itself',
  38. },
  39. {
  40. group: ['#/stores/*'],
  41. message:
  42. 'The #/stores package cannot be imported, please use the @core package itself',
  43. },
  44. {
  45. group: ['#/forward/*'],
  46. message:
  47. 'The #/forward package cannot be imported, please use the @core package itself',
  48. },
  49. ],
  50. },
  51. ],
  52. },
  53. },
  54. {
  55. // @core内部组件,不能引入@vben/* 里面的包
  56. files: ['packages/@core/**/**'],
  57. ignores: restrictedImportIgnores,
  58. rules: {
  59. 'no-restricted-imports': [
  60. 'error',
  61. {
  62. patterns: [
  63. {
  64. group: ['@vben/*'],
  65. message:
  66. 'The @core package cannot import the @vben package, please use the @core package itself',
  67. },
  68. ],
  69. },
  70. ],
  71. },
  72. },
  73. {
  74. // @core/shared内部组件,不能引入@vben/* 或者 @vben-core/* 里面的包
  75. files: ['packages/@core/shared/**/**'],
  76. ignores: restrictedImportIgnores,
  77. rules: {
  78. 'no-restricted-imports': [
  79. 'error',
  80. {
  81. patterns: [
  82. {
  83. group: ['@vben/*', '@vben-core/*'],
  84. message:
  85. 'The @vben-core/shared package cannot import the @vben package, please use the @core/shared package itself',
  86. },
  87. ],
  88. },
  89. ],
  90. },
  91. },
  92. {
  93. // 不能引入@vben/*里面的包
  94. files: [
  95. 'packages/types/**/**',
  96. 'packages/utils/**/**',
  97. 'packages/icons/**/**',
  98. 'packages/constants/**/**',
  99. 'packages/styles/**/**',
  100. ],
  101. ignores: restrictedImportIgnores,
  102. rules: {
  103. 'no-restricted-imports': [
  104. 'error',
  105. {
  106. patterns: [
  107. {
  108. group: ['@vben/*'],
  109. message:
  110. 'The @vben package cannot be imported, please use the @core package itself',
  111. },
  112. ],
  113. },
  114. ],
  115. },
  116. },
  117. // 后端模拟代码,不需要太多规则
  118. {
  119. files: ['apps/backend-mock/**/**'],
  120. rules: {
  121. '@typescript-eslint/no-extraneous-class': 'off',
  122. 'no-console': 'off',
  123. 'unicorn/prefer-module': 'off',
  124. },
  125. },
  126. ];
  127. export { customConfig };