eslint.config.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import pluginVitest from '@vitest/eslint-plugin'
  2. import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
  3. import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
  4. // To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
  5. import { configureVueProject } from '@vue/eslint-config-typescript'
  6. import perfectionist from 'eslint-plugin-perfectionist'
  7. import pluginVue from 'eslint-plugin-vue'
  8. import { globalIgnores } from 'eslint/config'
  9. // More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup
  10. configureVueProject({ scriptLangs: ['ts', 'tsx'] })
  11. export default defineConfigWithVueTs(
  12. {
  13. name: 'app/files-to-lint',
  14. files: ['**/*.{ts,mts,tsx,vue}'],
  15. },
  16. globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),
  17. pluginVue.configs['flat/essential'],
  18. vueTsConfigs.recommended,
  19. {
  20. ...pluginVitest.configs.recommended,
  21. files: ['src/**/__tests__/*'],
  22. },
  23. skipFormatting,
  24. {
  25. plugins: {
  26. perfectionist,
  27. },
  28. rules: {
  29. // vue
  30. 'vue/multi-word-component-names': 'off',
  31. // typescript
  32. '@typescript-eslint/ban-ts-comment': 'off',
  33. '@typescript-eslint/no-empty-object-type': 'off',
  34. '@typescript-eslint/no-explicit-any': 'off',
  35. '@typescript-eslint/no-unused-vars': 'warn',
  36. // perfectionist
  37. 'perfectionist/sort-exports': 'warn',
  38. 'perfectionist/sort-imports': [
  39. 'warn',
  40. {
  41. groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'type'],
  42. },
  43. ],
  44. 'perfectionist/sort-objects': 'off',
  45. },
  46. },
  47. )