import tseslint from '@typescript-eslint/eslint-plugin'; import tsparser from '@typescript-eslint/parser'; import reactHooks from 'eslint-plugin-react-hooks'; import reactRefresh from 'eslint-plugin-react-refresh'; export default [ { ignores: ['dist/**', 'dist-electron/**', 'release/**', 'node_modules/**', '.eslintrc.cjs'], }, { files: ['**/*.{ts,tsx}'], languageOptions: { parser: tsparser, parserOptions: { ecmaVersion: 'latest', sourceType: 'module', }, }, plugins: { '@typescript-eslint': tseslint, 'react-hooks': reactHooks, 'react-refresh': reactRefresh, }, rules: { // ESLint 推荐规则 ...tseslint.configs.recommended.rules, // React Hooks 规则(关闭 set-state-in-effect — 挂载时拉数据/弹窗是正常模式) ...reactHooks.configs.recommended.rules, 'react-hooks/set-state-in-effect': 'off', // React Refresh 'react-refresh/only-export-components': [ 'warn', { allowConstantExport: true }, ], // 自定义 'semi': ['warn', 'always'], '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], }, }, ];