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

Если ты всё ещё мучаешься с 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Вторая команда завезёт всё, включая информацию о неподдерживаемых правилах, если они есть. Дальше последовательно:
- Проанализируй текущую конфигурацию
Открой
.eslintrc.*и посмотри, какие плагины ты используешь (react, import, react-hooks и т.д.), какие custom rules. Примерно то же со своим.prettierrc. Это поможет понять, что нужно учесть при миграции.- Установи Biome и инициализируй конфиг
npm install --save-dev @biomejs/biome npx @biomejs/biome initВозникнет вопрос про размер проекта (small, medium, large) — выбери честно, это влияет на начальный preset правил.
- Мигрируй ESLint конфиг
npx @biomejs/biome migrate eslint --writeЭта команда прочитает твой
eslintrc, найдёт все плагины и extends, и перенесёт эквивалентные правила вbiome.json. Поддерживает как legacy, так и flat конфиги. Также мигрирует.eslintignoreв соответствующие поля в biome.json.- Мигрируй Prettier, если нужно
npx @biomejs/biome migrate prettier --writeПарсит твой
.prettierrcи добавляет эквивалентные настройки форматирования в Biome. Будь готов, что не все опции Prettier поддерживаются в Biome, но основные есть.- Удали старые зависимости и конфиги
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- Обнови скрипты в package.json
Вместо:
"eslint:fix": "eslint . --fix", "prettier:fix": "prettier . --write"Усе:
"lint": "biome check .", "lint:fix": "biome check . --write"- Настрой 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 уже доказал, что он реальная альтернатива, а не очередной хайп.
Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.
Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост мог бы стать ещё лучше 💗
Зарегистрироваться Войти© 2024 - 2026 ExLends, Inc. Все права защищены.