Как настроить ESLint в React проекте?react-65

ESLint — важнейший инструмент для поддержания качества кода в React-приложениях. Рассмотрим полный процесс настройки.

1. Установка необходимых пакетов

Базовые зависимости для React-проекта:

npm install eslint eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y @babel/eslint-parser --save-dev

Для TypeScript-проектов дополнительно:

npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev

2. Инициализация ESLint

Создаем конфигурационный файл:

npx eslint --init

Или вручную создаем .eslintrc.json:

3. Базовая конфигурация

{
  "env": {
    "browser": true,
    "es2021": true,
    "node": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended",
    "plugin:jsx-a11y/recommended"
  ],
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    },
    "ecmaVersion": 12,
    "sourceType": "module",
    "requireConfigFile": false
  },
  "plugins": ["react", "react-hooks", "jsx-a11y"],
  "rules": {
    "react/prop-types": "off",
    "react/react-in-jsx-scope": "off",
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn"
  },
  "settings": {
    "react": {
      "version": "detect"
    }
  }
}

4. Конфигурация для TypeScript

{
  "parser": "@typescript-eslint/parser",
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended"
  ],
  "plugins": ["@typescript-eslint", "react", "react-hooks"],
  "rules": {
    "@typescript-eslint/explicit-function-return-type": "off",
    "react/prop-types": "off"
  }
}

5. Интеграция с Prettier

Для совместной работы с Prettier:

npm install eslint-config-prettier eslint-plugin-prettier --save-dev

Добавляем в конфиг:

{
  "extends": [
    // другие расширения
    "plugin:prettier/recommended"
  ]
}

6. Настройка правил

Пример полезных правил для React:

"rules": {
  "react/jsx-uses-react": "error",
  "react/jsx-uses-vars": "error",
  "react/jsx-filename-extension": ["warn", { "extensions": [".jsx", ".tsx"] }],
  "react/self-closing-comp": "warn",
  "react/jsx-curly-brace-presence": ["warn", { "props": "never", "children": "never" }],
  "no-console": "warn",
  "no-unused-vars": "warn"
}

7. Игнорирование файлов

Создаем .eslintignore:

node_modules/
build/
dist/
*.config.js
public/
coverage/

8. Скрипты для package.json

Добавляем полезные команды:

"scripts": {
  "lint": "eslint src/",
  "lint:fix": "eslint --fix src/",
  "lint:watch": "esw --watch src/"
}

9. Интеграция с VSCode

Настройки для автоматического исправления:

{
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"]
}

10. Использование готовых конфигураций

Например, Airbnb-стиль:

npx install-peerdeps --dev eslint-config-airbnb

И добавляем в конфиг:

{
  "extends": ["airbnb", "airbnb/hooks"]
}

Резюмируем

Для правильной настройки ESLint в React-проекте:

  1. Установите базовые пакеты ESLint + React-плагины
  2. Настройте конфигурационный файл:
    • Выберите парсер (Babel или TypeScript)
    • Подключите необходимые плагины
    • Настройте правила проверки
  3. Добавьте интеграцию с:
    • Prettier (для форматирования)
    • IDE (для автоматического исправления)
  4. Настройте скрипты для удобной работы
  5. Определите игнорируемые файлы

Правильно настроенный ESLint поможет:

  • Поддерживать единый стиль кода в команде
  • Находить ошибки до запуска приложения
  • Автоматически исправлять многие проблемы
  • Соблюдать лучшие практики React-разработки