// .eslintrc.cjs module.exports = { root: true, env: { browser: true, node: true, es6: true, }, extends: [ 'eslint:recommended', 'plugin:vue/vue3-recommended', // Vue 3 推荐规则 '@vue/eslint-config-typescript', // TypeScript 支持 'prettier', // 关闭与 Prettier 冲突的规则(需先安装 prettier) 'plugin:prettier/recommended', // 将 Prettier 规则作为 ESLint 规则 ], parserOptions: { ecmaVersion: 'latest', sourceType: 'module', ecmaFeatures: { jsx: true, }, }, rules: { // 自定义规则(根据团队需求调整) 'vue/multi-word-component-names': 'off', 'prettier/prettier': 'error', // 将 Prettier 错误视为 ESLint 错误 // 强制使用 === 而非 == 'eqeqeq': 'error', // 组件 props 必须有类型和默认值 'vue/require-default-prop': 'error', 'vue/require-prop-types': 'error', // 限制每行最大长度 'max-len': ['warn', {code: 120}], // 禁止使用未定义的组件 'vue/no-unregistered-components': 'error', // 组件名必须为 PascalCase 'vue/component-name-in-template-casing': ['error', 'PascalCase'], // 禁止使用 v-html(防止 XSS) 'vue/no-v-html': 'warn', // 自定义规则(根据团队需求调整) 'vue/multi-word-component-names': 'off', // 允许单字组件名 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', '@typescript-eslint/no-unused-vars': ['warn', {argsIgnorePattern: '^_'}], }, overrides: [ // 针对测试文件的规则 { files: ['**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.spec.{j,t}s?(x)'], env: { jest: true, }, }, ], }