module.exports = { root: true, env: { node: true, es6: true, }, parserOptions: { ecmaVersion: 2020, sourceType: 'module', }, ignorePatterns: ['node_modules/*', '.next/*', '.out/*', '!.prettierrc.js'], // We don't want to lint generated files nor node_modules, but we want to lint .prettierrc.js (ignored by default by eslint) extends: ['eslint:recommended'], overrides: [ // This configuration will apply only to TypeScript files { files: ['**/*.ts', '**/*.tsx'], parser: '@typescript-eslint/parser', settings: { react: { version: 'detect' } }, env: { browser: true, node: true, es6: true, }, extends: [ 'eslint:recommended', 'plugin:@typescript-eslint/recommended', // TypeScript rules 'plugin:react/recommended', // React rules 'plugin:react-hooks/recommended', // React hooks rules 'plugin:jsx-a11y/recommended', // Accessibility rules 'plugin:prettier/recommended', // Prettier plugin ], rules: { 'react/prop-types': 'off', 'react/react-in-jsx-scope': 'off', // This rule is not compatible with Next.js's <Link /> components 'jsx-a11y/anchor-is-valid': 'off', '@typescript-eslint/no-unused-vars': ['error'], '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-explicit-any': 'error', 'prettier/prettier': ['warn', {}, { usePrettierrc: true }], // Includes .prettierrc.js rules }, }, ], };