Найти в Дзене

Переход от 8-й к 9-й версии eslint

Всем привет, меня зовут Панфилов Александр. Я фронтенд разработчик и тим лид, с 9-м опытом работы в области IT. Сегодня хочу с вами поделиться с вами небольшой историей о том, как я перевоходил с 8-й на 9-ю версию eslint. Я решил сделать редизайн своего сайта и перевести его не готовую систему компонентов, а заодно и обновить версию nextjs. Для этого я создал себе новый пустой проект и начал переносить в него старые настройки eslint с 8-й на 9-ю версию. Первым для меня открытием стало изменение формата конфигурационных файлов для 9-й версии eslint. Ранее в 8-й я использовал формат json. В 9-й версии необходимо использовать формат mjs. Из существующих пакетов для настройки мне нужны были следующие: Из всех существующих пакетов мне пришлось отказаться от использования "eslint-config-airbnb-typescript". Это было связано с конфликтом версий, он поддерживал только 8-ю, когда пробовал установить его на 9-ю — выбивало ошибку. Сам пакет не обновлялся уже несколько лет. Процесс перехода от 8-й

Всем привет, меня зовут Панфилов Александр. Я фронтенд разработчик и тим лид, с 9-м опытом работы в области IT. Сегодня хочу с вами поделиться с вами небольшой историей о том, как я перевоходил с 8-й на 9-ю версию eslint.

Я решил сделать редизайн своего сайта и перевести его не готовую систему компонентов, а заодно и обновить версию nextjs. Для этого я создал себе новый пустой проект и начал переносить в него старые настройки eslint с 8-й на 9-ю версию.

Первым для меня открытием стало изменение формата конфигурационных файлов для 9-й версии eslint. Ранее в 8-й я использовал формат json. В 9-й версии необходимо использовать формат mjs.

Из существующих пакетов для настройки мне нужны были следующие:

  • "eslint-config-airbnb-typescript": "^16.1.1" — не использую из-за конфликта с 9-й версией eslint
  • "eslint-config-next": "^15.4.3"
  • "eslint-config-prettier": "^8.5.0"
  • "eslint-import-resolver-alias": "^1.1.2"
  • "eslint-import-resolver-typescript": "^3.5.3"
  • "eslint-plugin-import": "^2.27.5"
  • "eslint-plugin-prettier": "^4.2.1"
  • "eslint-plugin-react": "^7.31.0"
  • "eslint-plugin-react-hooks": "^4.6.0"

Из всех существующих пакетов мне пришлось отказаться от использования "eslint-config-airbnb-typescript". Это было связано с конфликтом версий, он поддерживал только 8-ю, когда пробовал установить его на 9-ю — выбивало ошибку. Сам пакет не обновлялся уже несколько лет.

Процесс перехода от 8-й версии к 9-й ничего сложного из себя не представляет. Если есть готовый файл старого формата .json, то дастаточно будет использовать пакет @eslint/migrate-config.

После установки необходимо запустить следующую команду: npx @eslint/migrate-config .eslintrc.json, где .eslintrc.json — это путь к конфигурационному файлу, который поддерживает 8-ю версию.

Результатом выполнения команды станет новый конфигурационный файл и рекомандацию по установке дополнительных пакетов.

Результат выполнения команды npx @eslint/migrate-config .eslintrc.json
Результат выполнения команды npx @eslint/migrate-config .eslintrc.json

После выполнения вышеуказанного скрипта я начал запускать следующий скрипт для проверки и исправления ошибок. На этом этапе может возникнуть следующая ошибка:

  • конфликт между старым пакетом готовой конфигурации и пакетом 9-й версии eslint.

Для ее решение я вывел небольшой алгоритм:

  • сначала нужно повысить версию конфликтуемого пакета до максимальной, или поиграться с ней. В большинстве случаев это помогает;
  • удалить конфликтующий пакет и найти ему аналог по необходимости.

Этим коротким постом я хотел показать нюансы перехода с 8-й на 9-ю версию eslint, и подсветить на моменты, которые возникли у меня. Благодарю за внимание и до скорых встреч.