Biomejs - свежий взгляд на веб-разработку

Biome - инструмент, который уверенно набирает популярность и претендует стать заменой старой связке ESLint + Prettier.

Что такое Biome

Biome — это набор инструментов в единой системе (toolchain), написанная полностью на Rust. Она объединяет в себе форматтер и линтер для популярных языков фронтенда.

Интересный факт: Biome не привязан к npm или каким-либо менеджерам пакетов — это самодостаточный бинарный файл, который можно использовать где угодно.

Поддерживаемые языки

Biome охватывает множество языков. Ниже приведена таблица со списком текущих возможностей инструмента.

Language Parsing Formatting Linting Plugin Support
JavaScript
TypeScript
JSX
TSX
JSON 🚫
JSONC 🚫
HTML ⌛️ ⌛️ 🚫 🚫
Vue ⚠️ ⚠️ ⚠️ 🚫
Svelte ⚠️ ⚠️ ⚠️ 🚫
Astro ⚠️ ⚠️ ⚠️ 🚫
CSS ✅️ ✅️ ✅️
YAML ⌛️ 🚫 🚫 🚫
GraphQL ✅️ ✅️ ✅️ 🚫
Markdown ⌛️ 🚫 🚫 🚫
GritQL ✅️ ✅️ 🚫 🚫
  • ✅: Поддерживается
  • 🚫: Не поддерживается (не в прогрессе)
  • ⌛️: Активная работа над поддержкой
  • ⚠️: Частично поддерживается (с осторожностью)

Немного истории: от Rome к Biome

Biome — это официальный форк Rome, того самого амбициозного проекта, который пытался объединить линтер, форматтер, тест-раннер и бандлер в одном флаконе. В какой-то момент разработчики Rome решили продолжить путь отдельно — и так появился Biome.

Интересный факт про историю названия

“The team wanted to create a second ‘Rome’, a second version of it. So we fused the words ‘Bis’ and ‘Rome’ — Biome.”

Примерный перевод: “Команда хотела создать второй ‘Рим’, его вторую версию. Поэтому мы объединили слова ‘Бис’ (на латинском "дважды") и ‘Рим’ — получилось Биом”. Название символично: Biome — это “второй Рим”, продолжающий его наследие, но с более зрелым подходом и реальной ставкой на производительность.

Поддержка IDE

У Biome есть две категории расширений: first-party и third-party.

First-party расширения для крупных IDE:

Third-party расширения:

  • Vim
  • Neovim
  • Helix
  • Sublime Text
  • Emacs
  • Nova

Быстрый старт

Установка

Biome проще всего поставить через менеджер пакетов npm, однако можно скачать и отдельный бинарный файл.

Установка через npm:

npm i -D -E @biomejs/biome

Использование

Biome предоставляет командный интерфейс (CLI) для форматирования и линтинга.

# Форматировать все файлы
npx @biomejs/biome format --write

# Форматировать определенные файлы
npx @biomejs/biome format --write <files>

# Проверить код и применить безопасные исправления ко всем файлам
npx @biomejs/biome lint --write

# Проверить код и применить безопасные исправления к определенным файлам
npx @biomejs/biome lint --write <files>

# Форматирование, линтинг и организация импортов для всех файлов
npx @biomejs/biome check --write

# Форматирование, линтинг и организация импортов для определенных файлов
npx @biomejs/biome check --write <files>

Настройка

Biome можно использовать и без конфигурационного файла. Но если вы хотите настроить поведение Biome, можно запустить команду по генерации конфига:

npx @biomejs/biome init

Команда создаст в корне проекта biome.json с базовой конфигурацией.

Подробный разбор настроек вы можете найти на официальном сайте - biomejs.dev/reference/configuration

Использование в VS Code

  1. Установите расширение Biome из VS Code Marketplace.
  2. Добавьте в корень проекта файл biome.json или сгенерируйте конфиг-файл через npx.
  3. Если biome.json создан вручную, скопируйте этот минимальный конфиг:

    {
      "$schema": "https://biomejs.dev/schemas/2.0.5/schema.json",
      "formatter": {
        "enabled": false
      },
      "linter": {
        "enabled": false
      },
      "assist": {
        "enabled": false
      }
    }

Теперь VS Code сам подхватит конфигурацию, и форматирование/линтинг будут выполняться на лету.

Как работает конфигурация

Biome ищет файл конфигурации рекурсивно от корня проекта к целевой папке. Например, если вы запускаете:

biome check project_root/path/to/dir

то Biome будет искать biome.json или .gitignore в следующих местах: project_rootpathtodir.

Поведение поиска можно менять — часть этих параметров тоже задаётся в конфиге. Это удобно, если у вас сложная структура или монорепозиторий.

Что говорят о Biome разработчики

Обсуждения взяты с Reddit и Hackernews.

Настроения в обсуждениях на Hackernews: люди раздражены частыми революциями в инструментах и обилием несовместимых решений. На Reddit больше про практические подходы, кто и как использует или использовал, почему перешел и\или почему вернулся к ESLint + Prettier.

Ситуация с Biome, как и всегда, не совсем однозначная. На любую идею найдутся как скептики, так и прагматики, и пессимисты. Однако многие соглашаются с рядом вещей, которые привносит Biome:

Достоинства Biome

  • Biome действительно быстрый - благодаря Rust-ядру линтинг и форматирование почти мгновенны;
  • Независим от пакетных менеджеров. Не нужна жесткая привязка к npm, yarn и другим инструментам управления пакетами. Можно скачать бинарник и пользоваться;
  • Прост в конфигурации.

Недостатки продукта:

  • Молодой проект: меньше доверия → многие остаются на классике (ESLint + Prettier);
  • WIP: у разработчиков много планов на будущее - поддержка больших языков, система плагинов, фикс багов и добавление новых фич. Вот некоторые и спросят, "А зачем ждать, когда есть стабильные, проверенные крупные продукты?";
  • Менее гибок: В отличие от связки ESLint + Prettier, здесь меньше возможностей подстроить всё под себя.

В целом выделяется тенденция использовать Biome в CI pipeline, небольших проектах, новых проектах. Но если проект большой, с тяжелыми, кастомными правилами, которые написаны с ESLint + Prettier, такие проекты лучше продолжать обслуживать с текущим стеком.

Я лично считаю, что личный опыт превыше опыта других. Можно долго выслушивать чужие мнения и сомневаться, какой шаг предпринять. Но стоит опробовать на себе, чтобы понять - действительно ли тебе это нужно.

При этом нужно всегда сохранять здравый смысл.

Советую самостоятельно опробовать инструмент в своих проектах! (да, это мнение автора; я использую Biome чтобы форматировать js код, при этом использую ESLint в качестве линтера).

Заключение

Biome — ещё молодой проект, но уже с большим потенциалом. Он объединяет философию Rome, мощь Rust и современный подход «один инструмент — много задач». Да, гибкости пока меньше, но скорость и простота компенсируют это сполна.

Для новичков — это отличная точка входа: не нужно возиться с ESLint-конфигами и зависимостями. Для опытных — мощный инструмент в CI-pipeline и хороший способ ускорить разработку.

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

Biome — это не замена на 100%, а скорее свежий взгляд на то, каким должен быть современный dev-инструмент: быстрым, нативным и минималистичным.