sori-client/eslint.config.js

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,
];