import { defineConfigWithVueTs, vueTsConfigs, } from '@vue/eslint-config-typescript'; import pluginVue from 'eslint-plugin-vue'; import { globalIgnores } from 'eslint/config'; import globals from 'globals'; import eslintConfigPrettier from 'eslint-config-prettier'; // To allow more languages other than `ts` in `.vue` files, uncomment the following lines: // import { configureVueProject } from '@vue/eslint-config-typescript' // configureVueProject({ scriptLangs: ['ts', 'tsx'] }) // More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup export default defineConfigWithVueTs( { name: 'app/files-to-lint', files: ['**/*.{ts,mts,tsx,vue}'], }, globalIgnores([ // 构建输出 '**/dist/**', '**/dist-ssr/**', '**/coverage/**', // 依赖 '**/node_modules/**', // Git相关 '**/.git/**', // 缓存目录 '**/.cache/**', '**/.temp/**', '**/.eslintcache', // 编辑器目录和文件 '**/.vscode/**', '**/.idea/**', '**/*.suo', '**/*.ntvs*', '**/*.njsproj', '**/*.sln', '**/*.sw?', // 配置文件 '**/*.config.js', '**/*.config.ts', '**/*.config.mjs', '**/*.config.cjs', '**/rspack.*.js', '**/rspack.*.ts', '**/vite.*.js', '**/vite.*.ts', // 环境文件 '**/.env*', '!**/.env.example', // 包管理器文件 '**/pnpm-lock.yaml', '**/package-lock.json', '**/yarn.lock', // 历史文件 '**/.history/**', // 日志文件 '**/*.log', '**/npm-debug.log*', '**/yarn-debug.log*', '**/yarn-error.log*', '**/pnpm-debug.log*', // 系统文件 '**/.DS_Store', '**/Thumbs.db' ]), { languageOptions: { globals: { ...globals.browser, ...globals.node, } } }, // Vue规则配置 pluginVue.configs['flat/essential'], pluginVue.configs['flat/strongly-recommended'], eslintConfigPrettier, { rules: { // Vue特定规则 'vue/multi-word-component-names': 'warn', 'vue/no-unused-vars': 'warn', 'vue/html-self-closing': ['warn', { html: { void: 'always', normal: 'always', component: 'always' } }], 'vue/max-attributes-per-line': ['warn', { singleline: 3, multiline: 1 }], // 通用规则 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', '@typescript-eslint/no-require-imports': 'error', } }, // TypeScript规则配置 vueTsConfigs.recommended, { rules: { '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], } }, );