eslint.config.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // eslint.config.js
  2. import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
  3. import pluginVue from 'eslint-plugin-vue'
  4. import eslintPluginJs from '@eslint/js'
  5. import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
  6. import { globalIgnores } from 'eslint/config'
  7. export default defineConfigWithVueTs(
  8. // ✅ 基础推荐规则(提供语法检测能力)
  9. eslintPluginJs.configs.recommended,
  10. // ✅ Vue 规则
  11. pluginVue.configs['flat/essential'],
  12. // ✅ TypeScript 推荐规则
  13. vueTsConfigs.recommended,
  14. // ✅ 跳过格式化冲突(Prettier)
  15. skipFormatting,
  16. // ✅ 忽略目录
  17. globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),
  18. // ✅ 项目自定义规则
  19. {
  20. name: 'app/files-to-lint',
  21. files: ['**/*.{ts,mts,tsx,vue}'],
  22. rules: {
  23. // 🚫 关闭常用约束
  24. 'vue/multi-word-component-names': 'off',
  25. '@typescript-eslint/no-explicit-any': 'off',
  26. // ✅ 强化语法检测
  27. 'no-unexpected-multiline': 'error',
  28. 'no-unreachable': 'error',
  29. 'no-empty': 'error',
  30. 'no-extra-parens': 'error',
  31. 'no-fallthrough': 'error',
  32. },
  33. },
  34. )