eslint.config.mjs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 cypress from 'eslint-plugin-cypress';
  7. import globals from 'globals';
  8. export default tseslint.config(
  9. {
  10. ignores: ['dist/', 'node_modules/'],
  11. },
  12. eslint.configs.recommended,
  13. tseslint.configs.recommended,
  14. reactHooks.configs.flat.recommended,
  15. {
  16. files: ['src/**/*.{ts,tsx}'],
  17. plugins: {
  18. react,
  19. },
  20. rules: {
  21. ...eslint.configs.recommended.rules,
  22. ...tseslint.configs.recommended.rules,
  23. ...react.configs.recommended.rules,
  24. ...react.configs['jsx-runtime'].rules,
  25. },
  26. languageOptions: {
  27. globals: globals.browser,
  28. parserOptions: {
  29. ecmaFeatures: {
  30. jsx: true,
  31. },
  32. }
  33. },
  34. settings: {
  35. react: {
  36. version: 'detect',
  37. },
  38. }
  39. },
  40. {
  41. files: ['integration-tests/**/*.{ts,tsx,js}'],
  42. ...cypress.configs.recommended,
  43. languageOptions: {
  44. globals: {
  45. require: 'readonly',
  46. module: 'writable',
  47. },
  48. },
  49. rules: {
  50. ...cypress.configs.recommended.rules,
  51. 'no-console': 'off',
  52. '@typescript-eslint/no-namespace': 'off',
  53. '@typescript-eslint/no-require-imports': 'off',
  54. '@typescript-eslint/no-unused-expressions': 'off',
  55. },
  56. },
  57. prettier,
  58. );