ESLint выполняет функцию статического анализатора JavaScript и TypeScript-кода, выявляя ошибки, потенциально опасные конструкции и несоответствия стилевым правилам до выполнения приложения. В экосистеме Vite он используется не как отдельный этап сборки, а как часть процесса разработки, интегрированная в dev-сервер.
Vite ориентирован на быстрый цикл разработки с мгновенными обновлениями модулей через ESM и HMR. В этом контексте ESLint работает параллельно, не вмешиваясь в бандлинг, а анализируя исходный код при изменениях файлов.
Плагин vite-plugin-eslint обеспечивает подключение ESLint к pipeline Vite. Он запускает проверку файлов при их изменении и передаёт результаты в систему логирования Vite или в overlay браузера.
Ключевая задача плагина:
Основные зависимости:
npm install eslint vite-plugin-eslint --save-dev
или
yarn add eslint vite-plugin-eslint -D
import { defineConfig } from 'vite';
import eslint from 'vite-plugin-eslint';
export default defineConfig({
plugins: [
eslint({
include: ['src/**/*.js', 'src/**/*.ts', 'src/**/*.vue'],
exclude: ['node_modules']
})
]
});
При активном dev-сервере Vite плагин перехватывает события изменения файлов и запускает ESLint только для затронутого модуля.
Основные особенности поведения:
{
"env": {
"browser": true,
"es2022": true
},
"extends": [
"eslint:recommended"
],
"rules": {
"no-unused-vars": "warn",
"no-console": "off"
}
}
Современный формат конфигурации ESLint использует JavaScript-модульную структуру:
import js from '@eslint/js';
export default [
js.configs.recommended,
{
files: ['**/*.{js,ts}'],
rules: {
'no-unused-vars': 'warn',
'no-undef': 'error'
}
}
];
Vite-плагин корректно работает с flat config, поскольку использует стандартный ESLint API без привязки к устаревшему формату конфигурации.
При использовании TypeScript добавляется парсер и плагин:
npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev
Конфигурация:
export default [
{
files: ['**/*.ts'],
languageOptions: {
parser: '@typescript-eslint/parser'
},
plugins: {
'@typescript-eslint': require('@typescript-eslint/eslint-plugin')
},
rules: {
'@typescript-eslint/no-unused-vars': 'warn'
}
}
];
Vite-плагин оптимизирует выполнение ESLint за счёт нескольких механизмов:
В больших проектах ключевое значение имеет ограничение области
анализа через include.
eslint({
include: ['src/**/*.{js,ts,vue}']
});
Для .vue файлов часто используется:
npm install eslint-plugin-react eslint-plugin-react-hooks --save-dev
rules: {
'react/react-in-jsx-scope': 'off',
'react-hooks/rules-of-hooks': 'error'
}
При наличии ошибок ESLint Vite может отображать их в браузере через overlay-слой.
Типичный сценарий:
Overlay управляется настройками плагина и Vite:
eslint({
emitWarning: true,
emitError: true
});
Несовместимость ESLint 8 и 9 может приводить к:
Одновременное использование:
приводит к избыточной нагрузке.
Неправильная настройка exclude вызывает анализ:
dist)node_modules)что резко снижает производительность.
Несмотря на интеграцию в Vite, основной контроль качества кода часто выполняется в CI:
eslint "src/**/*.{js,ts}"
В таком режиме vite-plugin-eslint отключается, поскольку dev-ориентированная логика не требуется.
| Подход | Особенности |
|---|---|
| vite-plugin-eslint | Интерактивная проверка в dev-сервере |
| CLI ESLint | Полный анализ проекта, CI |
| pre-commit hooks | Проверка перед коммитом |
Комбинация этих уровней формирует многоступенчатую систему контроля качества.
Vite использует модульный pipeline, где плагины подключаются через единый интерфейс Rollup-подобной системы. vite-plugin-eslint внедряется в этап трансформации файлов, не вмешиваясь в финальную сборку.
Схема взаимодействия:
include до исходного кодаHot Module Replacement в Vite работает независимо от ESLint, однако плагин влияет на UX процесса разработки:
Это обеспечивает разделение ответственности между сборщиком и анализатором кода.