90 lines
2.3 KiB
JavaScript
90 lines
2.3 KiB
JavaScript
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,
|
|
];
|