eslint.config.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // https://docs.expo.dev/guides/using-eslint/
  2. const { defineConfig } = require('eslint/config');
  3. const expoConfig = require('eslint-config-expo/flat');
  4. module.exports = defineConfig([
  5. expoConfig,
  6. {
  7. files: ['**/*.{ts,tsx,js,jsx}'],
  8. rules: {
  9. // type-only 导入与值导入分开,autofix 自动加 `type` 关键字
  10. '@typescript-eslint/consistent-type-imports': [
  11. 'error',
  12. { prefer: 'type-imports', fixStyle: 'separate-type-imports' },
  13. ],
  14. // 当一条 import 同时包含 type 和 value,强制拆成两条 `import type` / `import`
  15. 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
  16. // import 自动排序与分组
  17. 'import/order': [
  18. 'error',
  19. {
  20. groups: [
  21. ['builtin', 'external'],
  22. 'internal',
  23. ['parent', 'sibling', 'index'],
  24. 'object',
  25. 'type',
  26. ],
  27. pathGroups: [
  28. { pattern: '@/**', group: 'internal', position: 'before' },
  29. ],
  30. pathGroupsExcludedImportTypes: ['builtin', 'type'],
  31. 'newlines-between': 'never',
  32. alphabetize: { order: 'asc', caseInsensitive: true },
  33. },
  34. ],
  35. 'import/no-duplicates': ['error', { 'prefer-inline': false }],
  36. },
  37. },
  38. {
  39. ignores: ['dist/*'],
  40. },
  41. ]);