import pluginJs from '@eslint/js'; import pluginUnocss from '@unocss/eslint-config/flat'; import pluginPrettier from 'eslint-config-prettier'; import pluginImport from 'eslint-plugin-import'; import pluginReact from 'eslint-plugin-react'; import pluginReactCompiler from 'eslint-plugin-react-compiler'; import pluginReactHooks from 'eslint-plugin-react-hooks'; import pluginReactRefresh from 'eslint-plugin-react-refresh'; import globals from 'globals'; import { configs as tseslintConfigs } from 'typescript-eslint'; /** @type {import('eslint').Linter.Config[]} */ export default [ { ignores: ['dist', 'node-modules', '.yarn', '.pnp.*'] }, { files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] }, { languageOptions: { globals: globals.browser } }, { ...pluginReact.configs.flat.recommended, settings: { react: { version: 'detect', }, }, rules: { 'react/prop-types': ['off'], }, }, pluginReact.configs.flat['jsx-runtime'], pluginJs.configs.recommended, ...tseslintConfigs.recommended, { languageOptions: { ecmaVersion: 2020, globals: globals.browser, }, plugins: { 'react-hooks': pluginReactHooks, 'react-refresh': pluginReactRefresh, }, rules: { ...pluginReactHooks.configs.recommended.rules, 'react-refresh/only-export-components': [ 'warn', { allowConstantExport: true }, ], }, }, pluginImport.flatConfigs.recommended, pluginImport.flatConfigs.typescript, pluginImport.flatConfigs.react, { languageOptions: { ecmaVersion: 'latest', sourceType: 'module', }, settings: { 'import/external-module-folders': ['node_modules', '.yarn'], 'import/resolver': { // You will also need to install and configure the TypeScript resolver // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration typescript: true, node: true, }, }, rules: { 'import/no-cycle': 'warn', 'import/order': [ 'error', { named: true, alphabetize: { order: 'asc', caseInsensitive: true, }, }, ], }, }, { plugins: { 'react-compiler': pluginReactCompiler, }, rules: { 'react-compiler/react-compiler': 'error', }, }, pluginPrettier, pluginUnocss, ];