Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. Biome v2: миграция с ESLint+Prettier за 10x ускорение

Biome v2: миграция с ESLint+Prettier за 10x ускорение

Запланировано Прикреплена Закрыта Перенесена JavaScript
biomeeslintprettier
1 Сообщения 1 Постеры 1 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH Не в сети
    hannadevH Не в сети
    hannadev
    написал отредактировано
    #1

    Обложка: Biome v2: миграция с ESLint+Prettier для 10x ускорения линтинга в Next.js проектах

    Если ты всё ещё мучаешься с ESLint и Prettier — они парсят код по два раза, конфиги разлетелись по разным файлам, а линтинг в CI проекта занимает неприлично много времени — то Biome пришёл решать эти проблемы. Это не просто замена, это переосмысление того, как должны работать линтер и форматер вместе.

    Новая версия Biome уже в production, Next.js 15 официально переходит на неё, и цифры производительности вызывают уважение. Разобраться, стоит ли мигрировать твой проект, сейчас самое время.

    Что произошло с ESLint и Prettier

    Если честно, эти два инструмента никогда не были созданы друг для друга. Когда ты запускаешь их вместе, происходит вот что: ESLint парсит файл в один AST, запускает все правила, находит ошибки. Затем Prettier берёт этот же файл и парсит его снова в совершенно другой AST, чтобы перейти на нужный стиль. Получается, что каждый файл обрабатывается дважды двумя разными парсерами — это боль.

    Добавь к этому множество конфигов: .eslintrc.js, .prettierrc, .eslintignore, плюсы расширения, плюсы кастомные правила. Всё это живёт в разных местах проекта, требует отдельных зависимостей, отдельной настройки в VS Code, отдельных скриптов в package.json. Хозяйство становится невероятно запутанным.

    Вот почему ESLint вообще отказывается от правил форматирования, а Prettier растёт в цене — нужен был инструмент, который делает обе задачи одновременно, не переделывая работу дважды.

    Почему Biome это киллер-фича

    Biome — это переписанная с нуля архитектура для линтинга и форматирования. Написан на Rust, работает многопоточно, парсит код один раз и применяет все правила за проход. Результат? До 25 раз быстрее чем дуэт ESLint + Prettier на одном и том же проекте.

    Вот реальные цифры из case study с medium-sized Next.js проектом на 3847 TypeScript файлов:

    Метрика ESLint + Prettier Biome
    Время линтинга 34 сек ~2 сек
    Время форматирования 11 сек <1 сек
    Итого в CI ~2 мин ~10 сек

    Нет, это не опечатка. Это просто волшебство оптимизации и параллельной обработки.

    Плюсом идёт единая конфигурация: всё живёт в одном biome.json, поддерживает JSON и JSON5, легко читается и редактируется. Никаких отдельных расширений для Prettier, никаких плагинов, которые конфликтуют с друг другом.

    Что поддерживает Biome

    Здесь нужно быть честным: Biome не панацея, и выбор инструмента зависит от того, что именно тебе нужно. Вот текущий статус поддержки языков:

    • JavaScript / TypeScript - полная поддержка, это основная фишка
    • JSON, JSONC - работает отлично
    • GraphQL - поддерживается
    • CSS - есть линтинг с правилами из stylelint-config-recommended
    • HTML, Markdown, SCSS - пока не поддерживаются
    • Vue, Astro, Svelte - только частичная поддержка

    Если твой проект чистый TypeScript + React с обычным CSS или Tailwind — это твоя система. Если ты активно линтишь HTML шаблоны или работаешь с Vue, придётся мешать инструменты.

    По количеству правил Biome покрывает всё самое важное из ESLint и Prettier, плюсом добавляет свои checks специфичные для современного JS. За каждым правилом стоит документация, и если что-то не работает, это хорошо задокументировано.

    Как мигрировать с ESLint и Prettier

    Biome предусмотрела миграцию заранее, и это не больно. Если ты не хочешь разбираться в деталях, вот команда-спасатель:

    npx @biomejs/biome migrate eslint --write
    npx @biomejs/biome migrate prettier --write
    

    Вторая команда завезёт всё, включая информацию о неподдерживаемых правилах, если они есть. Дальше последовательно:

    1. Проанализируй текущую конфигурацию

    Открой .eslintrc.* и посмотри, какие плагины ты используешь (react, import, react-hooks и т.д.), какие custom rules. Примерно то же со своим .prettierrc. Это поможет понять, что нужно учесть при миграции.

    1. Установи Biome и инициализируй конфиг
    npm install --save-dev @biomejs/biome
    npx @biomejs/biome init
    

    Возникнет вопрос про размер проекта (small, medium, large) — выбери честно, это влияет на начальный preset правил.

    1. Мигрируй ESLint конфиг
    npx @biomejs/biome migrate eslint --write
    

    Эта команда прочитает твой eslintrc, найдёт все плагины и extends, и перенесёт эквивалентные правила в biome.json. Поддерживает как legacy, так и flat конфиги. Также мигрирует .eslintignore в соответствующие поля в biome.json.

    1. Мигрируй Prettier, если нужно
    npx @biomejs/biome migrate prettier --write
    

    Парсит твой .prettierrc и добавляет эквивалентные настройки форматирования в Biome. Будь готов, что не все опции Prettier поддерживаются в Biome, но основные есть.

    1. Удали старые зависимости и конфиги
    npm uninstall eslint prettier eslint-config-next
    rm .eslintrc.* .prettierrc .eslintignore
    

    Включи VCS integration в biome.json, если хочешь работать только с изменёнными файлами:

    {
      "vcs": {
        "enabled": true,
        "clientKind": "git"
      }
    }
    

    Дальше можешь использовать --changed флаг:

    npx @biomejs/biome check --changed
    
    1. Обнови скрипты в package.json

    Вместо:

    "eslint:fix": "eslint . --fix",
    "prettier:fix": "prettier . --write"
    

    Усе:

    "lint": "biome check .",
    "lint:fix": "biome check . --write"
    
    1. Настрой VS Code

    Установи расширение Biome для своего редактора, удали ESLint и Prettier экстензии, выбери Biome как форматер по умолчанию. В .vscode/settings.json:

    {
      "editor.defaultFormatter": "biomejs.biome",
      "editor.formatOnSave": true,
      "editor.codeActionsOnSave": {
        "quickfix.biome": "explicit"
      }
    }
    

    Всё, теперь линтинг и форматирование работают одинаково в редакторе и в CI.

    Особенности Biome v2

    Новая версия принесла много улучшений. Производительность — это остаётся главным козырем. Благодаря архитектуре на Rust, Biome над 15 раз быстрее ESLint одного на одного.

    Поддержка более широкого спектра языков — CSS линтинг развивается, добавляются новые rules. Хотя HTML и Markdown всё ещё в очереди.

    Лучшая интеграция с фреймворками — Next.js 15 уже предлагает Biome как официальный вариант наравне с ESLint при создании нового проекта через create-next-app. В Next.js 16 они вообще удалили встроенный next lint, оставив выбор: используй ESLint или Biome напрямую.

    Отсутствие необходимости в плагинах и расширениях упрощает жизнь. Кастомные конфиги работают через JavaScript модули в том же файле, всё более прямолинейно.

    Когда стоит подождать

    Migration имеет смысл далеко не для всех проектов. Если ты работаешь с:

    • Сложными Prettier конфигами — функции вроде прямой загрузки из JS файлов не всегда поддерживаются. Biome ждёт JSON или JSON5.
    • Кастомными ESLint плагинами — если ты писал свои правила, потребуется переписать на архитектуру Biome. Это не сложно, но не мгновенно.
    • Фреймворками вроде Vue или Astro в production — поддержка ещё не полная, рискованно для больших кодовых баз.
    • HTML/Markdown линтингом — это функции просто отсутствуют пока.
    • Очень экзотичными конфигами — если ты из редких 5%, кто использует нестандартные настройки, лучше сначала проверить совместимость.

    Для остального — мигрируй без колебаний. Переход занимает час-два, а выигрыш в скорости сразу видно.

    Эффект на реальные проекты

    Next.js официально поддерживает Biome, и это не мелочь. Это означает, что экосистема развивается вместе с фреймворком, issues решаются быстро, документация актуальна.

    Практика показывает, что после миграции девелоперы сообщают не только об ускорении CI пайплайна, но и о улучшении дх в целом. Единая конфигурация, один инструмент, меньше конфликтов в team workflow. Когда новый разработчик приходит в проект, ему не нужно разбираться с ESLint плагинами и Prettier quirks — просто npm install и всё работает.

    Скорость обратной связи в редакторе тоже заметно лучше. Биоме чекает файл практически мгновенно, так что ошибки выявляются сразу при печати.

    Что остаётся за кадром

    Biome развивается активно, и roadmap впечатляет. HTML и Markdown форматирование на горизонте, поддержка Vue и Svelte станут полнее. Плюсом идёт потенциал для более серьёзного анализа кода — типа выявления неиспользуемых переменных, циклических импортов и прочих недекларативных багов.

    Если твой проект на TypeScript + React с обычным стеком — это был бы хороший момент попробовать. Если же у тебя есть особые требования или экзотический стек, имеет смысл ещё мониторить развитие. Выбор инструмента — это не навсегда, и Biome уже доказал, что он реальная альтернатива, а не очередной хайп.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы