// ESLint 9 flat config // 项目级配置:TypeScript + NestJS + Next.js + 设计令牌规则 const js = require('@eslint/js'); const tseslint = require('typescript-eslint'); const prettierConfig = require('eslint-config-prettier'); module.exports = tseslint.config( // 全局忽略 { ignores: [ '**/dist/**', '**/node_modules/**', '**/.next/**', '**/coverage/**', '**/*.config.js', '**/*.config.mjs', 'scripts/arch-scan/**', ], }, // 基础 JS 规则 js.configs.recommended, // TypeScript 规则 ...tseslint.configs.recommended, // 项目级自定义规则 { languageOptions: { ecmaVersion: 2024, sourceType: 'module', }, rules: { // 禁止 any(未知类型用 unknown) '@typescript-eslint/no-explicit-any': 'warn', // 未使用变量允许下划线前缀 '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', }, ], // 允许 console(开发环境) 'no-console': 'off', }, }, // 测试文件放宽规则 { files: [ '**/*.test.ts', '**/*.test.tsx', '**/*.spec.ts', '**/*.spec.tsx', '**/test/**', '**/__tests__/**', ], rules: { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', }, }, // 禁用与 Prettier 冲突的规则 prettierConfig, );