123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- import type { Linter } from 'eslint';
- const restrictedImportIgnores = [
- '**/vite.config.mts',
- '**/tailwind.config.mjs',
- '**/postcss.config.mjs',
- ];
- const customConfig: Linter.FlatConfig[] = [
- // shadcn-ui 内部组件是自动生成的,不做太多限制
- {
- files: ['packages/@core/ui-kit/shadcn-ui/**/**'],
- rules: {
- 'vue/require-default-prop': 'off',
- },
- },
- {
- // apps内部的一些基础规则
- files: ['apps/**/**'],
- ignores: restrictedImportIgnores,
- rules: {
- 'no-restricted-imports': [
- 'error',
- {
- patterns: [
- {
- group: ['#/api/*'],
- message:
- 'The #/api package cannot be imported, please use the @core package itself',
- },
- {
- group: ['#/layouts/*'],
- message:
- 'The #/layouts package cannot be imported, please use the @core package itself',
- },
- {
- group: ['#/locales/*'],
- message:
- 'The #/locales package cannot be imported, please use the @core package itself',
- },
- {
- group: ['#/stores/*'],
- message:
- 'The #/stores package cannot be imported, please use the @core package itself',
- },
- ],
- },
- ],
- },
- },
- {
- // @core内部组件,不能引入@vben/* 里面的包
- files: ['packages/@core/**/**'],
- ignores: restrictedImportIgnores,
- rules: {
- 'no-restricted-imports': [
- 'error',
- {
- patterns: [
- {
- group: ['@vben/*'],
- message:
- 'The @core package cannot import the @vben package, please use the @core package itself',
- },
- ],
- },
- ],
- },
- },
- {
- // @core/shared内部组件,不能引入@vben/* 或者 @vben-core/* 里面的包
- files: ['packages/@core/base/**/**'],
- ignores: restrictedImportIgnores,
- rules: {
- 'no-restricted-imports': [
- 'error',
- {
- patterns: [
- {
- group: ['@vben/*', '@vben-core/*'],
- message:
- 'The @vben-core/shared package cannot import the @vben package, please use the @core/shared package itself',
- },
- ],
- },
- ],
- },
- },
- {
- // 不能引入@vben/*里面的包
- files: [
- 'packages/types/**/**',
- 'packages/utils/**/**',
- 'packages/icons/**/**',
- 'packages/constants/**/**',
- 'packages/styles/**/**',
- 'packages/stores/**/**',
- 'packages/preferences/**/**',
- 'packages/locales/**/**',
- ],
- ignores: restrictedImportIgnores,
- rules: {
- 'no-restricted-imports': [
- 'error',
- {
- patterns: [
- {
- group: ['@vben/*'],
- message:
- 'The @vben package cannot be imported, please use the @core package itself',
- },
- ],
- },
- ],
- },
- },
- // 后端模拟代码,不需要太多规则
- {
- files: ['apps/backend-mock/**/**', 'website/**/**'],
- rules: {
- '@typescript-eslint/no-extraneous-class': 'off',
- 'n/no-extraneous-import': 'off',
- 'n/prefer-global/buffer': 'off',
- 'n/prefer-global/process': 'off',
- 'no-console': 'off',
- 'unicorn/prefer-module': 'off',
- },
- },
- {
- files: ['internal/**/**'],
- rules: {
- 'no-console': 'off',
- },
- },
- ];
- export { customConfig };
|