53 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Biome vs Oxlint: Comparison for Frontend Tooling
## Context
Проект использует **ESLint v8** + **Prettier** для линтинга и форматирования. ESLint 8 устарел (ESLint 9 имеет полностью изменённый конфиг). Рассматриваем замену на современную Rust-тулзу, совмещающую линтинг и форматирование.
## Candidates
### Biome (v2.5.0)
- **Linter + Formatter** в одном CLI (`biome check --write`)
- 500+ правил (ESLint + TypeScript ESLint + другие источники)
- Форматтер: **97% совместимость с Prettier**, ~35x быстрее
- Поддержка: JS, TS, JSX, TSX, JSON, HTML, CSS, GraphQL
- Единый конфиг `biome.json` вместо `.eslintrc` + `.prettierrc`
- Встроенный import sorting (замена `eslint-plugin-import`)
- Production usage: AWS, Google, Vercel, Microsoft, Discord, Cloudflare
- Стабильный LTS-релиз, зрелое сообщество
### Oxlint + Oxfmt (Oxc Project)
- **Oxlint**: 50-100x быстрее ESLint, 800+ правил
- **Oxfmt**: ~3x быстрее Biome formatter, 30x быстрее Prettier
- Type-aware linting через `tsgo`
- ESLint JS Plugin Support (alpha)
- **Два отдельных инструмента** с разными конфигами
- Oxfmt в статусе **beta**
- Под капотом: самый быстрый parser (3x SWC), resolver, minifier (alpha)
- Бэкд: VoidZero (авторы Vite, Rolldown, Rspack)
## Comparison
| Критерий | Biome | Oxlint + Oxfmt |
|----------|-------|----------------|
| Замена ESLint | ✅ 500+ правил | ✅ 800+ правил |
| Замена Prettier | ✅ 97%, stable | ⚠️ Oxfmt beta |
| Один CLI вместо двух | ✅ | ❌ два инструмента |
| Production-ready | ✅ LTS | ⚠️ formatter beta |
| Конфигурация | 1 файл | 2 файла |
| Скорость линтинга | ~35x vs ESLint | ~50-100x vs ESLint |
| Скорость форматирования | ~35x vs Prettier | ~3x vs Biome |
| Сообщество | mature | growing |
## Verdict: Biome
**Рекомендуется Biome** по трём причинам:
1. **Одна тулза** вместо двух — меньше конфигов, меньше CI-степов, меньше точек отказа
2. **Production-ready** — formatter стабилен, LTS-релизы, тысячи проектов в продакшене
3. **Плавная миграция** — встроенная команда `biome migrate eslint --write` переносит правила автоматически; `biome format` совместим с Prettier на 97%, не требуется массовых изменений кода
Oxlint + Oxfmt перспективны (быстрее, больше правил), но Oxfmt ещё beta, и два инструмента усложняют конфигурацию. Если Oxfmt выйдет в stable — вопрос стоит пересмотреть.