<?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 в одном пакете с CSS-in-JS]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/5d/e7/5a/1774191703894-generated_1774191674752.webp" alt="Обложка: Node.js 24: Biome v2 как замена ESLint+Prettier с CSS-in-JS поддержкой и нулевой конфигурацией" class=" img-fluid img-markdown" /></p>
<p dir="auto">Надоело жонглировать конфигами ESLint и Prettier? Пора познакомиться с Biome — инструментом на Rust, который делает работу обоих за раз и при этом быстрее в разы. Мы разберёмся, как мигрировать проект без боли и почему это вообще имеет смысл в 2026.</p>
<p dir="auto">Если ты когда-нибудь настраивал ESLint и Prettier вместе, то знаешь эту боль: два парсера, два AST-дерева, два конфига, две игнор-папки. Биоме всё это убирает одним выстрелом.</p>
<h2>Почему Biome, а не привычная парочка?</h2>
<p dir="auto">Давайте честно: ESLint и Prettier — хорошие инструменты, но они работают отдельно. Когда ты запускаешь оба, происходит вот что: ESLint парсит файл, создаёт AST, гоняет правила, выдаёт ошибки. Потом Prettier парсит тот же файл <em>снова</em>, создаёт <em>свой</em> AST и переформатирует код. Это неэффективно.</p>
<p dir="auto">Biome работает по-другому: один парсер, один движок на Rust, одна конфигурация. Результат? Скорость выше, конфигов меньше, багов меньше. Плюс, <strong>всё это встроено в один npm-пакет</strong> — не нужно отдельно ставить eslint, @typescript-eslint/parser, eslint-plugin-react и ещё сотню зависимостей.</p>
<p dir="auto">Есть и практический плюс: <strong>единый файл конфигурации</strong> вместо .eslintrc.json, .eslintignore, .prettierrc и .prettierignore. До миграции можно иметь 40 строк в конфиге; после — 29. Это не просто цифра, это реальное упрощение проекта.</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>Минимум 4 файла</td>
<td>1 файл (biome.json)</td>
</tr>
<tr>
<td>Зависимостей</td>
<td>20+ пакетов</td>
<td>1 пакет</td>
</tr>
<tr>
<td>Скорость</td>
<td>Базовая</td>
<td>До 10x быстрее*</td>
</tr>
<tr>
<td>Установка</td>
<td>Долгая</td>
<td>Минут 5</td>
</tr>
<tr>
<td>CSS-in-JS</td>
<td>Через плагины</td>
<td>Встроено (v2)</td>
</tr>
</tbody>
</table>
<h2>Миграция: пошагово без святогерманий</h2>
<p dir="auto">Биоме не просто заявляет о замене — он реально помогает перейти. В CLI встроена команда <code>biome migrate eslint</code>, которая считывает твой .eslintrc и автоматически конвертирует правила в эквиваленты Biome. Это работает с новыми и старыми форматами конфигов.</p>
<p dir="auto">Процесс примерно такой: запускаешь миграцию, Biome переносит настройки, потом ты проверяешь результат и при нужде подредактируешь. Команда <code>biome migrate prettier</code> делает то же самое для форматера.</p>
<p dir="auto">Важный момент: <strong>Biome может не 100% повторить поведение ESLint</strong>, потому что разработчики сознательно не реализовали некоторые опции или слегка отклонились от оригинала. Но на практике это почти никогда не вызывает проблем — разница появляется в очень специфичных случаях.</p>
<p dir="auto"><strong>Пошаговый план миграции:</strong></p>
<ol>
<li>Оцени текущий сетап: какие плагины ESLint ты используешь (react, import, etc.), есть ли кастомные правила, какие переопределения в Prettier.</li>
<li>Установи Biome: <code>npm install --save-dev @biomejs/biome</code>.</li>
<li>Запусти автоматическую миграцию: <code>npx biome migrate eslint --write</code> и <code>npx biome migrate prettier --write</code>.</li>
<li>Проверь сгенерированный biome.json — может понадобиться убрать дублирующиеся правила или добавить специфичные для твоего проекта.</li>
<li>Запусти проверку: <code>npx biome check .</code> и сравни результаты со старым линтером.</li>
<li>Если всё окей, удали старые зависимости и конфиги: <code>npm uninstall eslint prettier @typescript-eslint/parser</code> и так далее.</li>
<li>Обнови pre-commit хуки, если они есть, чтобы использовали Biome вместо отдельных инструментов.</li>
</ol>
<h2>Что внутри: архитектура Biome</h2>
<p dir="auto">Biome состоит из трёх основных частей, которые работают вместе как одна система. <strong>Linter</strong> ловит баги, проблемы с качеством кода, нарушения best practices. <strong>Formatter</strong> приводит код в порядок — отступы, скобки, точки с запятой, всё как надо. <strong>Organizer</strong> сортирует импорты и убирает мусор.</p>
<p dir="auto">Всё это написано на Rust, что объясняет скорость. Biome обрабатывает файлы параллельно, кэширует результаты и вообще делает то, что Node.js-версия ESLint+Prettier никогда не сможет делать так эффективно. Плюс, v2 добавила <strong>HTML-форматер</strong> — теперь ты можешь линтить и форматить не только JS/TS, но и разметку.</p>
<p dir="auto">К 2026 году Biome уже поддерживает:</p>
<ul>
<li>JavaScript и TypeScript (с полной поддержкой синтаксиса).</li>
<li>JSON, JSONC, TOML (включая package.json).</li>
<li>HTML и JSX/TSX.</li>
<li>CSS и CSS-in-JS конструкции (встроено в v2).</li>
<li>Организацию импортов по правилам.</li>
</ul>
<p dir="auto">Конфигурация при этом минималистична. Вот базовый пример для типичного проекта:</p>
<pre><code class="language-json">{
  "vcs": { "enabled": true, "clientKind": "git" },
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "lineWidth": 120
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  },
  "javascript": {
    "formatter": {
      "semicolons": "always",
      "quoteStyle": "single"
    }
  }
}
</code></pre>
<p dir="auto">Вот и всё. Никаких extends, никаких плагинов — всё, что нужно, уже включено.</p>
<h2>Node.js 24 и экосистема: как это вписывается</h2>
<p dir="auto">Biome стал частью большего тренда: в 2026 году экосистема JavaScript/TypeScript активно переходит на Rust-инструменты. Bun уже готовится заменить Node.js (хотя это долгая история), и Biome идёт в том же направлении — переписывает классические Node.js-tools более эффективно.</p>
<p dir="auto">Для Node.js 24 это хорошая новость: ты получаешь инструмент, который не утяжеляет твой проект тоннами зависимостей, работает быстро, и при этом не требует специальной настройки для работы с современными фичами (async/await, top-level await, приватные поля в классах и так далее).</p>
<p dir="auto">Migration path в экосистеме тоже облегчен: если ты уже используешь Bun, Biome интегрируется без проблем. Если ты на Node.js, то Biome работает через обычный npm и совместим со всеми стандартными workflow’ами.</p>
<p dir="auto"><strong>Совместимость Biome с популярными инструментами:</strong></p>
<ul>
<li>VS Code: расширение работает оттуб, интеграция в редактор как с ESLint и Prettier.</li>
<li>Git hooks: можно использовать в pre-commit (через husky или аналоги).</li>
<li>CI/CD: встраивается в любой pipeline — GitHub Actions, GitLab CI, Jenkins.</li>
<li>IDE: PhpStorm, WebStorm и другие JetBrains поддерживают LSP, что даёт интеграцию с Biome.</li>
</ul>
<h2>Ловушки при миграции и как их избежать</h2>
<p dir="auto">Хотя Biome старается быть полностью совместим, есть несколько моментов, о которых стоит знать до того, как ты начнёшь. Во-первых, <strong>YAML-конфиги не поддерживаются</strong> — если твой .eslintrc написан в YAML, придётся переделать в JSON. JavaScript-конфиги тоже требуют Node.js для загрузки, так что убедись, что у тебя он установлен.</p>
<p dir="auto">Во-вторых, при миграции Biome по умолчанию не трогает правила, которые <em>вдохновлены</em> ESLint, но не идентичны. Если ты хочешь включить их все, нужна флаг <code>--include-inspired</code>. Звучит странно, но на практике это означает, что ты получишь точное совпадение поведения только для основных правил, остальное придётся проверить вручную.</p>
<p dir="auto">Третий момент — Next.js. Иногда миграция падает с ошибкой про то, что Node.js не смог разрешить модуль. Это происходит, потому что Next.js может переопределять пути импортов. Решение: не полагайся полностью на автоматическую миграцию, проверь конфиг вручную.</p>
<p dir="auto"><strong>Чек-лист перед удалением старых инструментов:</strong></p>
<ul>
<li>Запусти <code>npx biome check .</code> на весь проект и убедись, что все файлы обрабатываются без ошибок.</li>
<li>Сравни вывод Biome с результатами старого ESLint по нескольким файлам.</li>
<li>Обнови скрипты в package.json: замени <code>eslint .</code> и <code>prettier .</code> на <code>biome check .</code> или <code>biome format .</code>.</li>
<li>Если есть игнор-файлы, проверь, что VCS-интеграция в biome.json включена (опция <code>vcs.enabled: true</code>).</li>
<li>Тестируй в отдельной ветке перед тем, как мерджить в main.</li>
</ul>
<h2>Итоги: стоит ли оно того</h2>
<p dir="auto">В 2026 году Biome уже не экспериментальный проект — это зрелый инструмент, который используют серьёзные компании. Если тебе надоел мусор из конфигов и хочется ускорить локальную разработку и CI/CD, миграция — это разумный выбор. Потеря совместимости с 100% поведением ESLint — это совсем небольшая цена за экономию конфигурации, скорость и удобство.</p>
<p dir="auto">Сложность миграции переоценена: в большинстве случаев можно просто запустить автоматические команды и дальше работать. Если у тебя нестандартный сетап или кастомные правила, потребуется больше внимания, но это всё равно быстрее, чем лезть в дебри ESLint-плагинов. И помни: Biome всё ещё активно развивается, так что возможности будут только расширяться.</p>
]]></description><link>https://forum.exlends.ru/topic/1847/biome-v2-eslint-prettier-v-odnom-pakete-s-css-in-js</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 04:06:06 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1847.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Mar 2026 15:01:44 GMT</pubDate><ttl>60</ttl></channel></rss>