Прощай, Rome, здравствуй, Biome: новый универсальный набор фронтенд-инструментов

2 мин

1. «Усталость от инструментов» во фронтенд-разработке

В современной фронтенд-разработке проекту обычно требуется сложное сочетание инструментов для бесперебойной работы:

  • Linter: ESLint проверяет качество кода JavaScript/TypeScript.
  • Formatter: Prettier обеспечивает единый стиль кода.
  • Compiler: Babel или TypeScript (tsc) преобразует код.
  • Bundler: Webpack, Rollup или Vite собирает приложение.

Управление настройками, плагинами, версиями и взаимодействием этих инструментов само по себе требует немало труда. Это и называют «усталостью от инструментов». В течение многих лет сообщество изучало возможность универсального набора инструментов, надеясь решить все задачи одним средством.

2. Идея Rome и рождение Biome

Rome был амбициозным проектом, начатым бывшим сотрудником Facebook и автором Babel Себастьяном Маккензи. Он стремился переписать весь набор фронтенд-инструментов на TypeScript. Идея заключалась в едином высокопроизводительном инструменте, не требующем настройки. Однако после многих лет разработки и попыток коммерциализации компания Rome Labs в 2023 году объявила о прекращении работы.

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

3. Что такое Biome?

Biome — высокопроизводительный набор фронтенд-инструментов, переписанный на Rust. Он призван обеспечить единый и чрезвычайно быстрый процесс разработки, заменив ряд независимых инструментов, таких как ESLint и Prettier.

К концу 2023 года основные возможности Biome были сосредоточены прежде всего на Linter и Formatter, и в обеих областях он уже демонстрировал впечатляющие результаты.

Основные преимущества:

  • Высочайшая производительность: Благодаря Rust Biome работает намного быстрее написанных на JavaScript ESLint и Prettier. Для крупных кодовых баз прирост может достигать целого порядка.
  • Единая конфигурация: Всего один файл biome.json позволяет управлять поведением всех инструментов, заменяя разбросанные .eslintrc, .prettierrc и .editorconfig.
  • Подробная диагностика: Linter Biome не только указывает на ошибки, но и предоставляет подробный контекст и рекомендации по исправлению, помогая разработчикам понять причину проблемы.
  • Совместимость с Prettier: Форматтер Biome стремится поддерживать более 95% правил Prettier, поэтому стоимость миграции с Prettier остается очень низкой.

4. Быстрый старт

Biome можно быстро опробовать в проекте с помощью npx:

# 检查当前项目中的代码问题
npx @biomejs/biome check ./src

# 自动修复可修复的 lint 问题
npx @biomejs/biome check --apply ./src

# 格式化代码
npx @biomejs/biome format --write ./src

Создайте файл biome.json, чтобы настроить правила и параметры:

{
  "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json",
  "organizeImports": {
    "enabled": true
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  }
}

5. Взгляд в будущее

У Biome очень ясная дорожная карта: после стабилизации Linter и Formatter постепенно реализовать Compiler, Bundler, Test Runner и другие функции, чтобы в итоге стать по-настоящему универсальным набором инструментов.

Хотя Biome еще молод, благодаря превосходной производительности, открытой модели развития силами сообщества и вниманию к удобству разработчиков он уже стал заметной новой силой среди фронтенд-инструментов. Для команд, которые хотят упростить набор инструментов и повысить эффективность разработки, Biome предлагает очень привлекательный вариант на будущее.