eslint.config.mjs (63 lines of code) (raw):
import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import globals from 'globals';
import path from 'path';
import { fileURLToPath } from 'url';
import tseslint from 'typescript-eslint';
import reactRefresh from 'eslint-plugin-react-refresh';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
});
export default tseslint.config(
{
ignores: ['dist', '.eslintrc.cjs', 'eslint.config.mjs'],
},
js.configs.recommended,
...compat.extends(
'@jetbrains',
'@jetbrains/eslint-config/react',
'@jetbrains/eslint-config/browser',
'plugin:react-hooks/recommended',
),
...tseslint.configs.recommended,
{
files: ['**/*.{ts,tsx,js,jsx}'],
languageOptions: {
globals: {
...globals.browser,
...globals.es2020,
},
},
plugins: {
'react-refresh': reactRefresh,
},
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
"react/jsx-no-literals": "off",
'max-len': [
'error',
{
code: 120,
ignoreComments: true,
ignoreTemplateLiterals: true,
ignoreRegExpLiterals: true,
ignorePattern: '"(?=([^"]|"){40,}")|\'(?=([^\']|\'){40,}\')',
},
],
},
},
{
files: ["src/*.js"],
languageOptions: {
globals: {
...globals.node,
}
}
}
);