eslint.config.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import js from '@eslint/js';
  2. import globals from 'globals';
  3. import reactHooks from 'eslint-plugin-react-hooks';
  4. import reactRefresh from 'eslint-plugin-react-refresh';
  5. import tseslint from 'typescript-eslint';
  6. /** @type {import('eslint').Linter.Config[]} */
  7. export default [
  8. {
  9. ignores: ['**/node_modules/', '**/dist/', '**/build/', '**/coverage/'],
  10. },
  11. js.configs.recommended,
  12. ...tseslint.configs.recommended,
  13. {
  14. files: ['**/*.{js,jsx,ts,tsx}'],
  15. languageOptions: {
  16. ecmaVersion: 2022,
  17. globals: {
  18. ...globals.browser,
  19. ...globals.node,
  20. },
  21. parserOptions: {
  22. ecmaVersion: 'latest',
  23. sourceType: 'module',
  24. ecmaFeatures: {
  25. jsx: true,
  26. },
  27. },
  28. },
  29. plugins: {
  30. 'react-hooks': reactHooks,
  31. 'react-refresh': reactRefresh,
  32. },
  33. rules: {
  34. ...reactHooks.configs.recommended.rules,
  35. 'react-refresh/only-export-components': [
  36. 'warn',
  37. { allowConstantExport: true },
  38. ],
  39. '@typescript-eslint/no-unused-vars': 'error',
  40. '@typescript-eslint/no-explicit-any': 'warn',
  41. 'prefer-const': 'error',
  42. 'no-var': 'error',
  43. },
  44. },
  45. ];