custom-config.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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. },
  46. ],
  47. },
  48. },
  49. {
  50. // @core内部组件,不能引入@vben/* 里面的包
  51. files: ['packages/@core/**/**'],
  52. ignores: restrictedImportIgnores,
  53. rules: {
  54. 'no-restricted-imports': [
  55. 'error',
  56. {
  57. patterns: [
  58. {
  59. group: ['@vben/*'],
  60. message:
  61. 'The @core package cannot import the @vben package, please use the @core package itself',
  62. },
  63. ],
  64. },
  65. ],
  66. },
  67. },
  68. {
  69. // @core/shared内部组件,不能引入@vben/* 或者 @vben-core/* 里面的包
  70. files: ['packages/@core/base/**/**'],
  71. ignores: restrictedImportIgnores,
  72. rules: {
  73. 'no-restricted-imports': [
  74. 'error',
  75. {
  76. patterns: [
  77. {
  78. group: ['@vben/*', '@vben-core/*'],
  79. message:
  80. 'The @vben-core/shared package cannot import the @vben package, please use the @core/shared package itself',
  81. },
  82. ],
  83. },
  84. ],
  85. },
  86. },
  87. {
  88. // 不能引入@vben/*里面的包
  89. files: [
  90. 'packages/types/**/**',
  91. 'packages/utils/**/**',
  92. 'packages/icons/**/**',
  93. 'packages/constants/**/**',
  94. 'packages/styles/**/**',
  95. 'packages/stores/**/**',
  96. 'packages/preferences/**/**',
  97. 'packages/locales/**/**',
  98. ],
  99. ignores: restrictedImportIgnores,
  100. rules: {
  101. 'no-restricted-imports': [
  102. 'error',
  103. {
  104. patterns: [
  105. {
  106. group: ['@vben/*'],
  107. message:
  108. 'The @vben package cannot be imported, please use the @core package itself',
  109. },
  110. ],
  111. },
  112. ],
  113. },
  114. },
  115. // 后端模拟代码,不需要太多规则
  116. {
  117. files: ['apps/backend-mock/**/**', 'website/**/**'],
  118. rules: {
  119. '@typescript-eslint/no-extraneous-class': 'off',
  120. 'n/no-extraneous-import': 'off',
  121. 'n/prefer-global/buffer': 'off',
  122. 'n/prefer-global/process': 'off',
  123. 'no-console': 'off',
  124. 'unicorn/prefer-module': 'off',
  125. },
  126. },
  127. {
  128. files: ['internal/**/**'],
  129. rules: {
  130. 'no-console': 'off',
  131. },
  132. },
  133. ];
  134. export { customConfig };