eslint.config.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import js from '@eslint/js';
  2. import prettier from 'eslint-config-prettier';
  3. import importPlugin from 'eslint-plugin-import';
  4. import reactPlugin from 'eslint-plugin-react';
  5. import reactHooks from 'eslint-plugin-react-hooks';
  6. import unusedImports from 'eslint-plugin-unused-imports';
  7. import { defineConfig, globalIgnores } from 'eslint/config';
  8. import globals from 'globals';
  9. import tseslint from 'typescript-eslint';
  10. export default defineConfig([
  11. globalIgnores([
  12. 'public/static/',
  13. 'dist',
  14. 'src/.umi/',
  15. 'src/.umi-production/',
  16. 'src/.umi-test/'
  17. ]),
  18. {
  19. files: ['**/*.{ts,tsx,js,jsx}'],
  20. extends: [
  21. js.configs.recommended,
  22. tseslint.configs.recommended,
  23. reactHooks.configs.flat.recommended,
  24. prettier
  25. ],
  26. plugins: {
  27. react: reactPlugin,
  28. import: importPlugin,
  29. 'unused-imports': unusedImports
  30. },
  31. settings: {
  32. react: {
  33. version: 'detect'
  34. },
  35. 'import/resolver': {
  36. node: true,
  37. typescript: true
  38. }
  39. },
  40. languageOptions: {
  41. ecmaVersion: 2020,
  42. globals: {
  43. ...globals.browser,
  44. ...globals.node,
  45. Global: 'readonly',
  46. React: 'readonly',
  47. JSX: 'readonly'
  48. }
  49. },
  50. rules: {
  51. 'react/no-unstable-nested-components': 'warn',
  52. 'no-unused-vars': 'off',
  53. 'no-undef': 'off',
  54. '@typescript-eslint/no-unused-vars': 'off',
  55. '@typescript-eslint/no-explicit-any': 'off',
  56. '@typescript-eslint/ban-ts-comment': 'off',
  57. '@typescript-eslint/ban-types': 'off',
  58. '@typescript-eslint/no-empty-object-type': 'off',
  59. '@typescript-eslint/no-unnecessary-type-constraint': 'off',
  60. 'unused-imports/no-unused-imports': 'error',
  61. 'unused-imports/no-unused-vars': 'off',
  62. 'import/no-unresolved': 'off',
  63. 'import/no-duplicates': 'error',
  64. 'react-hooks/exhaustive-deps': 'off',
  65. 'react-hooks/preserve-manual-memoization': 'off',
  66. 'react-hooks/set-state-in-effect': 'off',
  67. 'react-hooks/refs': 'off',
  68. 'react-hooks/use-memo': 'off',
  69. 'react-hooks/immutability': 'off',
  70. 'no-unsafe-optional-chaining': 'off',
  71. 'no-empty': 'off',
  72. 'no-constant-condition': 'off',
  73. 'no-prototype-builtins': 'off',
  74. 'no-multiple-empty-lines': ['error', { max: 1, maxEOF: 0, maxBOF: 0 }]
  75. }
  76. }
  77. ]);