import js from '@eslint/js' import globals from 'globals' import reactHooks from 'eslint-plugin-react-hooks' import reactRefresh from 'eslint-plugin-react-refresh' import tseslint from 'typescript-eslint' import { defineConfig, globalIgnores } from 'eslint/config' export default defineConfig([ globalIgnores(['dist']), { files: ['**/*.{ts,tsx}'], extends: [ js.configs.recommended, tseslint.configs.recommended, reactHooks.configs.flat.recommended, reactRefresh.configs.vite, ], languageOptions: { ecmaVersion: 2020, globals: globals.browser, }, rules: { // 允许下划线前缀的变量/参数不报错(约定: _xxx 表示已知未使用) '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_', }, ], // catch 子句允许 any(err.message 等访问场景) '@typescript-eslint/no-explicit-any': [ 'error', { fixToUnknown: false, ignoreRestArgs: true }, ], // React Compiler 迁移型规则先作为告警推进,避免历史页面一次性阻断本地门禁。// Logan.Li 'react-hooks/static-components': 'warn', 'react-hooks/set-state-in-effect': 'warn', 'react-hooks/purity': 'warn', 'react-hooks/immutability': 'warn', 'react-hooks/preserve-manual-memoization': 'warn', // 工具函数和组件同文件导出在历史代码中较多,先降级为告警后续逐步拆分。// Logan.Li 'react-refresh/only-export-components': 'warn', }, }, ])