ESLint — это инструмент статического анализа кода, предназначенный для выявления потенциальных ошибок, несоответствий стилю кодирования и поддержания единообразия в проекте. В контексте проектов на Vuetify правильная конфигурация ESLint обеспечивает чистый, читаемый и поддерживаемый код компонентов Vue.
1. Определение среды проекта
В конфигурационном файле .eslintrc.js указываются среды,
в которых будет работать проект:
module.exports = {
env: {
browser: true,
node: true,
es2021: true,
},
};
browser: true — разрешает глобальные объекты браузера
(window, document).node: true — разрешает глобальные объекты Node.js
(process, require).es2021: true — активирует синтаксис ECMAScript
2021.Vuetify строится на Vue, поэтому ESLint должен понимать синтаксис
.vue файлов и специфические правила Vuetify. Для этого
подключают следующие плагины:
module.exports = {
plugins: ['vue', 'vuetify'],
extends: [
'eslint:recommended',
'plugin:vue/vue3-recommended',
'plugin:vuetify/recommended',
],
};
plugin:vue/vue3-recommended — набор правил для Vue 3,
включая проверку компонентов, директив, событий и шаблонов.plugin:vuetify/recommended — специальные правила для
Vuetify, включая корректное использование компонентов, слотов и
темизации..vue файловЧтобы ESLint корректно обрабатывал Vue Single File Components, необходимо указать парсер:
module.exports = {
parser: 'vue-eslint-parser',
parserOptions: {
parser: '@babel/eslint-parser',
ecmaVersion: 2021,
sourceType: 'module',
},
};
vue-eslint-parser разделяет шаблон, скрипт и стиль
внутри .vue файлов.@babel/eslint-parser позволяет использовать современный
JavaScript, включая JSX и нестандартные синтаксические конструкции.Конфигурация ESLint может включать правила, которые обеспечивают единообразие кода и корректное использование компонентов Vuetify:
module.exports = {
rules: {
'vue/html-indent': ['error', 2],
'vue/max-attributes-per-line': [
'error',
{
singleline: 3,
multiline: { max: 1, allowFirstLine: false },
},
],
'vuetify/no-deprecated-classes': 'warn',
'vuetify/no-legacy-grid': 'error',
'vue/script-setup-uses-vars': 'error',
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
},
};
vue/html-indent — обеспечивает единообразное
форматирование шаблонов.vue/max-attributes-per-line — ограничивает количество
атрибутов на одной строке, улучшая читаемость.vuetify/no-deprecated-classes — предупреждает
использование устаревших CSS-классов Vuetify.vuetify/no-legacy-grid — запрещает использование
устаревшей сетки, что важно при переходе на Vuetify 3.vue/script-setup-uses-vars — предотвращает ложные
предупреждения об использовании переменных в
<script setup>.В проектах с TypeScript необходимо подключить парсер
@typescript-eslint/parser и соответствующие расширения:
module.exports = {
parser: 'vue-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser',
ecmaVersion: 2021,
sourceType: 'module',
},
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:vue/vue3-recommended',
'plugin:vuetify/recommended',
],
rules: {
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
},
};
_ для аргументов, которые не
используются, предотвращает лишние предупреждения.Для автоматического форматирования кода часто используют Prettier совместно с ESLint. В этом случае конфигурация выглядит так:
module.exports = {
extends: [
'plugin:vue/vue3-recommended',
'plugin:vuetify/recommended',
'plugin:prettier/recommended',
],
rules: {
'prettier/prettier': [
'error',
{
singleQuote: true,
semi: true,
trailingComma: 'all',
printWidth: 100,
},
],
},
};
plugin:prettier/recommended отключает конфликтующие
правила ESLint и применяет стиль Prettier.prettier/prettier позволяет настроить форматирование
под стандарты проекта, включая отступы, кавычки и длину строки.Для удобной работы с ESLint в редакторе:
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
ESLint поддерживает автоматическое исправление проблем с помощью команды:
npx eslint --fix src/**/*.vue
Можно задавать разные уровни проверки для среды разработки и продакшена:
module.exports = {
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
},
};
console.log и
debugger.eslint-plugin-vuetify и
eslint-plugin-vue для соответствия последним изменениям
Vuetify.lint-staged, чтобы проверка
ESLint выполнялась перед коммитом.overrides.Эта конфигурация ESLint обеспечивает корректное использование Vuetify, поддерживает единообразие кода и помогает предотвратить распространённые ошибки при разработке Vue компонентов.