<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Biome v2: миграция с ESLint+Prettier за 10x ускорение]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/bc/0a/e6/1774371630515-generated_1774371599468.webp" alt="Обложка: Biome v2: миграция с ESLint+Prettier для 10x ускорения линтинга в Next.js проектах" class=" img-fluid img-markdown" /></p>
<p dir="auto">Если ты всё ещё мучаешься с ESLint и Prettier — они парсят код по два раза, конфиги разлетелись по разным файлам, а линтинг в CI проекта занимает неприлично много времени — то Biome пришёл решать эти проблемы. Это не просто замена, это переосмысление того, как должны работать линтер и форматер вместе.</p>
<p dir="auto">Новая версия Biome уже в production, Next.js 15 официально переходит на неё, и цифры производительности вызывают уважение. Разобраться, стоит ли мигрировать твой проект, сейчас самое время.</p>
<h2>Что произошло с ESLint и Prettier</h2>
<p dir="auto">Если честно, эти два инструмента никогда не были созданы друг для друга. Когда ты запускаешь их вместе, происходит вот что: ESLint парсит файл в один AST, запускает все правила, находит ошибки. Затем Prettier берёт этот же файл и парсит его снова в совершенно другой AST, чтобы перейти на нужный стиль. Получается, что каждый файл обрабатывается дважды двумя разными парсерами — это боль.</p>
<p dir="auto">Добавь к этому множество конфигов: <code>.eslintrc.js</code>, <code>.prettierrc</code>, <code>.eslintignore</code>, плюсы расширения, плюсы кастомные правила. Всё это живёт в разных местах проекта, требует отдельных зависимостей, отдельной настройки в VS Code, отдельных скриптов в package.json. Хозяйство становится невероятно запутанным.</p>
<p dir="auto">Вот почему ESLint вообще отказывается от правил форматирования, а Prettier растёт в цене — нужен был инструмент, который делает обе задачи одновременно, не переделывая работу дважды.</p>
<h2>Почему Biome это киллер-фича</h2>
<p dir="auto">Biome — это переписанная с нуля архитектура для линтинга и форматирования. Написан на Rust, работает многопоточно, парсит код один раз и применяет все правила за проход. Результат? <strong>До 25 раз быстрее</strong> чем дуэт ESLint + Prettier на одном и том же проекте.</p>
<p dir="auto">Вот реальные цифры из case study с medium-sized Next.js проектом на 3847 TypeScript файлов:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Метрика</th>
<th>ESLint + Prettier</th>
<th>Biome</th>
</tr>
</thead>
<tbody>
<tr>
<td>Время линтинга</td>
<td>34 сек</td>
<td>~2 сек</td>
</tr>
<tr>
<td>Время форматирования</td>
<td>11 сек</td>
<td>&lt;1 сек</td>
</tr>
<tr>
<td>Итого в CI</td>
<td>~2 мин</td>
<td>~10 сек</td>
</tr>
</tbody>
</table>
<p dir="auto">Нет, это не опечатка. Это просто волшебство оптимизации и параллельной обработки.</p>
<p dir="auto">Плюсом идёт единая конфигурация: всё живёт в одном <code>biome.json</code>, поддерживает JSON и JSON5, легко читается и редактируется. Никаких отдельных расширений для Prettier, никаких плагинов, которые конфликтуют с друг другом.</p>
<h2>Что поддерживает Biome</h2>
<p dir="auto">Здесь нужно быть честным: <strong>Biome не панацея</strong>, и выбор инструмента зависит от того, что именно тебе нужно. Вот текущий статус поддержки языков:</p>
<ul>
<li><strong>JavaScript / TypeScript</strong> - полная поддержка, это основная фишка</li>
<li><strong>JSON, JSONC</strong> - работает отлично</li>
<li><strong>GraphQL</strong> - поддерживается</li>
<li><strong>CSS</strong> - есть линтинг с правилами из stylelint-config-recommended</li>
<li><strong>HTML, Markdown, SCSS</strong> - пока не поддерживаются</li>
<li><strong>Vue, Astro, Svelte</strong> - только частичная поддержка</li>
</ul>
<p dir="auto">Если твой проект чистый TypeScript + React с обычным CSS или Tailwind — это твоя система. Если ты активно линтишь HTML шаблоны или работаешь с Vue, придётся мешать инструменты.</p>
<p dir="auto">По количеству правил Biome покрывает всё самое важное из ESLint и Prettier, плюсом добавляет свои checks специфичные для современного JS. За каждым правилом стоит документация, и если что-то не работает, это хорошо задокументировано.</p>
<h2>Как мигрировать с ESLint и Prettier</h2>
<p dir="auto">Biome предусмотрела миграцию заранее, и это не больно. Если ты не хочешь разбираться в деталях, вот команда-спасатель:</p>
<pre><code class="language-bash">npx @biomejs/biome migrate eslint --write
npx @biomejs/biome migrate prettier --write
</code></pre>
<p dir="auto">Вторая команда завезёт всё, включая информацию о неподдерживаемых правилах, если они есть. Дальше последовательно:</p>
<ol>
<li><strong>Проанализируй текущую конфигурацию</strong></li>
</ol>
<p dir="auto">Открой <code>.eslintrc.*</code> и посмотри, какие плагины ты используешь (react, import, react-hooks и т.д.), какие custom rules. Примерно то же со своим <code>.prettierrc</code>. Это поможет понять, что нужно учесть при миграции.</p>
<ol start="2">
<li><strong>Установи Biome и инициализируй конфиг</strong></li>
</ol>
<pre><code class="language-bash">npm install --save-dev @biomejs/biome
npx @biomejs/biome init
</code></pre>
<p dir="auto">Возникнет вопрос про размер проекта (small, medium, large) — выбери честно, это влияет на начальный preset правил.</p>
<ol start="3">
<li><strong>Мигрируй ESLint конфиг</strong></li>
</ol>
<pre><code class="language-bash">npx @biomejs/biome migrate eslint --write
</code></pre>
<p dir="auto">Эта команда прочитает твой <code>eslintrc</code>, найдёт все плагины и extends, и перенесёт эквивалентные правила в <code>biome.json</code>. Поддерживает как legacy, так и flat конфиги. Также мигрирует <code>.eslintignore</code> в соответствующие поля в biome.json.</p>
<ol start="4">
<li><strong>Мигрируй Prettier, если нужно</strong></li>
</ol>
<pre><code class="language-bash">npx @biomejs/biome migrate prettier --write
</code></pre>
<p dir="auto">Парсит твой <code>.prettierrc</code> и добавляет эквивалентные настройки форматирования в Biome. Будь готов, что не все опции Prettier поддерживаются в Biome, но основные есть.</p>
<ol start="5">
<li><strong>Удали старые зависимости и конфиги</strong></li>
</ol>
<pre><code class="language-bash">npm uninstall eslint prettier eslint-config-next
rm .eslintrc.* .prettierrc .eslintignore
</code></pre>
<p dir="auto">Включи VCS integration в <code>biome.json</code>, если хочешь работать только с изменёнными файлами:</p>
<pre><code class="language-json">{
  "vcs": {
    "enabled": true,
    "clientKind": "git"
  }
}
</code></pre>
<p dir="auto">Дальше можешь использовать <code>--changed</code> флаг:</p>
<pre><code class="language-bash">npx @biomejs/biome check --changed
</code></pre>
<ol start="6">
<li><strong>Обнови скрипты в package.json</strong></li>
</ol>
<p dir="auto">Вместо:</p>
<pre><code class="language-json">"eslint:fix": "eslint . --fix",
"prettier:fix": "prettier . --write"
</code></pre>
<p dir="auto">Усе:</p>
<pre><code class="language-json">"lint": "biome check .",
"lint:fix": "biome check . --write"
</code></pre>
<ol start="7">
<li><strong>Настрой VS Code</strong></li>
</ol>
<p dir="auto">Установи расширение Biome для своего редактора, удали ESLint и Prettier экстензии, выбери Biome как форматер по умолчанию. В <code>.vscode/settings.json</code>:</p>
<pre><code class="language-json">{
  "editor.defaultFormatter": "biomejs.biome",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "quickfix.biome": "explicit"
  }
}
</code></pre>
<p dir="auto">Всё, теперь линтинг и форматирование работают одинаково в редакторе и в CI.</p>
<h2>Особенности Biome v2</h2>
<p dir="auto">Новая версия принесла много улучшений. <strong>Производительность</strong> — это остаётся главным козырем. Благодаря архитектуре на Rust, Biome над 15 раз быстрее ESLint одного на одного.</p>
<p dir="auto"><strong>Поддержка более широкого спектра языков</strong> — CSS линтинг развивается, добавляются новые rules. Хотя HTML и Markdown всё ещё в очереди.</p>
<p dir="auto"><strong>Лучшая интеграция с фреймворками</strong> — Next.js 15 уже предлагает Biome как официальный вариант наравне с ESLint при создании нового проекта через <code>create-next-app</code>. В Next.js 16 они вообще удалили встроенный <code>next lint</code>, оставив выбор: используй ESLint или Biome напрямую.</p>
<p dir="auto">Отсутствие необходимости в плагинах и расширениях упрощает жизнь. Кастомные конфиги работают через JavaScript модули в том же файле, всё более прямолинейно.</p>
<h2>Когда стоит подождать</h2>
<p dir="auto">Migration имеет смысл далеко не для всех проектов. Если ты работаешь с:</p>
<ul>
<li><strong>Сложными Prettier конфигами</strong> — функции вроде прямой загрузки из JS файлов не всегда поддерживаются. Biome ждёт JSON или JSON5.</li>
<li><strong>Кастомными ESLint плагинами</strong> — если ты писал свои правила, потребуется переписать на архитектуру Biome. Это не сложно, но не мгновенно.</li>
<li><strong>Фреймворками вроде Vue или Astro в production</strong> — поддержка ещё не полная, рискованно для больших кодовых баз.</li>
<li><strong>HTML/Markdown линтингом</strong> — это функции просто отсутствуют пока.</li>
<li><strong>Очень экзотичными конфигами</strong> — если ты из редких 5%, кто использует нестандартные настройки, лучше сначала проверить совместимость.</li>
</ul>
<p dir="auto">Для остального — мигрируй без колебаний. Переход занимает час-два, а выигрыш в скорости сразу видно.</p>
<h2>Эффект на реальные проекты</h2>
<p dir="auto">Next.js официально поддерживает Biome, и это не мелочь. Это означает, что экосистема развивается вместе с фреймворком, issues решаются быстро, документация актуальна.</p>
<p dir="auto">Практика показывает, что после миграции девелоперы сообщают не только об ускорении CI пайплайна, но и о улучшении дх в целом. Единая конфигурация, один инструмент, меньше конфликтов в team workflow. Когда новый разработчик приходит в проект, ему не нужно разбираться с ESLint плагинами и Prettier quirks — просто npm install и всё работает.</p>
<p dir="auto">Скорость обратной связи в редакторе тоже заметно лучше. Биоме чекает файл практически мгновенно, так что ошибки выявляются сразу при печати.</p>
<h2>Что остаётся за кадром</h2>
<p dir="auto">Biome развивается активно, и roadmap впечатляет. HTML и Markdown форматирование на горизонте, поддержка Vue и Svelte станут полнее. Плюсом идёт потенциал для более серьёзного анализа кода — типа выявления неиспользуемых переменных, циклических импортов и прочих недекларативных багов.</p>
<p dir="auto">Если твой проект на TypeScript + React с обычным стеком — это был бы хороший момент попробовать. Если же у тебя есть особые требования или экзотический стек, имеет смысл ещё мониторить развитие. Выбор инструмента — это не навсегда, и Biome уже доказал, что он реальная альтернатива, а не очередной хайп.</p>
]]></description><link>https://forum.exlends.ru/topic/1917/biome-v2-migraciya-s-eslint-prettier-za-10x-uskorenie</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:53:59 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1917.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Mar 2026 17:00:30 GMT</pubDate><ttl>60</ttl></channel></rss>