eslint.config.mjs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import eslint from '@eslint/js';
  2. import tseslint from 'typescript-eslint';
  3. import react from 'eslint-plugin-react';
  4. import prettier from 'eslint-plugin-prettier/recommended';
  5. import reactHooks from 'eslint-plugin-react-hooks';
  6. import importX from 'eslint-plugin-import-x';
  7. import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';
  8. import playwright from 'eslint-plugin-playwright';
  9. import jest from 'eslint-plugin-jest';
  10. import testingLibrary from 'eslint-plugin-testing-library';
  11. import globals from 'globals';
  12. export default tseslint.config(
  13. {
  14. ignores: ['dist/', 'node_modules/'],
  15. },
  16. eslint.configs.recommended,
  17. tseslint.configs.strictTypeChecked,
  18. tseslint.configs.stylisticTypeChecked,
  19. reactHooks.configs.flat['recommended-latest'],
  20. importX.flatConfigs.recommended,
  21. importX.flatConfigs.typescript,
  22. {
  23. settings: {
  24. 'import-x/resolver-next': [createTypeScriptImportResolver()],
  25. },
  26. },
  27. {
  28. files: ['src/**/*.{ts,tsx}'],
  29. plugins: {
  30. react,
  31. },
  32. rules: {
  33. ...react.configs.recommended.rules,
  34. ...react.configs['jsx-runtime'].rules,
  35. '@typescript-eslint/consistent-type-imports': 'error',
  36. },
  37. languageOptions: {
  38. globals: globals.browser,
  39. parserOptions: {
  40. projectService: true,
  41. ecmaFeatures: {
  42. jsx: true,
  43. },
  44. },
  45. },
  46. settings: {
  47. react: {
  48. version: 'detect',
  49. },
  50. },
  51. },
  52. {
  53. files: ['src/**/*.spec.{ts,tsx}'],
  54. plugins: {
  55. ...jest.configs['flat/recommended'].plugins,
  56. ...jest.configs['flat/style'].plugins,
  57. ...testingLibrary.configs['flat/react'].plugins,
  58. },
  59. languageOptions: {
  60. ...jest.configs['flat/recommended'].languageOptions,
  61. ...jest.configs['flat/style'].languageOptions,
  62. globals: {
  63. ...jest.configs['flat/recommended'].languageOptions?.globals,
  64. ...globals.node,
  65. },
  66. },
  67. rules: {
  68. ...jest.configs['flat/recommended'].rules,
  69. ...jest.configs['flat/style'].rules,
  70. ...testingLibrary.configs['flat/react'].rules,
  71. },
  72. },
  73. {
  74. ...playwright.configs['flat/recommended'],
  75. files: ['integration-tests/**/*.ts'],
  76. ...tseslint.configs.disableTypeChecked,
  77. rules: {
  78. ...playwright.configs['flat/recommended'].rules,
  79. ...tseslint.configs.disableTypeChecked.rules,
  80. 'no-console': 'off',
  81. },
  82. },
  83. prettier,
  84. );