53 lines
3.1 KiB
Markdown
53 lines
3.1 KiB
Markdown
# 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 — вопрос стоит пересмотреть.
|