import globals from 'globals'; import js from '@eslint/js'; export default [ // Игнорируемые файлы и папки { ignores: [ '**/node_modules/**', // пакеты '**/dist/**', // сборка '**/build/**', // сборка '**/*.d.ts', // типы TS '**/*.d.ts.map' // sourcemap типовых файлов ] }, // Конфиг для JS файлов { files: ['**/*.{js,jsx}'], // проверяем только JS/JSX ...js.configs.recommended, // базовые правила ESLint languageOptions: { ecmaVersion: 'latest', // современный JS sourceType: 'module', // ES модули globals: { // глобальные переменные ...globals.browser, ...globals.node } }, rules: { 'no-console': 'off', // консоль разрешена 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', // debugger в dev — warn, в prod — error 'semi': ['error', 'always'], // точка с запятой обязательна 'quotes': ['error', 'single', { avoidEscape: true }] // одинарные кавычки, экранирование разрешено } }, // Конфиг для TypeScript файлов { files: ['**/*.{ts,tsx}'], languageOptions: { parser: await import('@typescript-eslint/parser').then(m => m.default), parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, globals: { ...globals.browser, ...globals.node } }, plugins: { '@typescript-eslint': await import('@typescript-eslint/eslint-plugin').then(m => m.default) }, rules: { 'no-console': 'off', // консоль разрешена 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'semi': ['error', 'always'], // обязательные точки с запятой 'quotes': ['error', 'single', { avoidEscape: true, allowTemplateLiterals: true }], // одинарные кавычки, шаблонные строки разрешены 'no-unused-vars': 'off', // TS не ругается на неиспользуемые переменные '@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/no-explicit-any': 'off' // any разрешен } }, // Конфиг для Vue файлов { files: ['**/*.vue'], // проверка только Vue languageOptions: { parser: await import('vue-eslint-parser').then(m => m.default), parserOptions: { parser: await import('@typescript-eslint/parser').then(m => m.default), // TS внутри