Skip to content

[Feature] Oxc lint and format pipeline #627

@TorinAsakura

Description

@TorinAsakura

С чем связан запрос?

Изначально задача была заведена как миграция на Biome, но после обсуждения целевой контур меняется: не размазываем lint/format по нескольким vendor-ам, а идём в единый Oxc-стек (oxlint + oxfmt). Biome остаётся только историческим benchmark, не production fallback.

Baseline на master от 2026-04-30:

  • yarn format: 478 файлов, wall 2.85s, exit 0; 1 файл был изменён командой и откатан после замера
  • yarn lint: 364 файла, wall 17.47s, exit 0
  • yarn lint --cache: 364 файла, wall 15.13s, exit 0; cache mutation откатан после замера
  • текущий format + lint: 20.32s

Исторический benchmark Biome 2.4.13:

  • biome format: 448 файлов, wall 1.49s, internal 107ms, exit 1 из-за style mismatches
  • biome lint: 363 файла, wall 1.18s, internal 146ms, exit 1, 48 errors / 190 warnings / 7 infos
  • biome format + lint: 2.67s, примерно 7.6x быстрее текущего format + lint

Опиши план реализации

Мигрировать lint/format pipeline на Oxc как единый vendor-контур:

  • добавить Oxc-конфигурацию с текущими include/exclude, без опоры на дефолты
  • сопоставить текущий Prettier-style с доступными настройками oxfmt
  • решить, чем закрывается текущий import sorting из @atls/prettier-plugin
  • сопоставить текущие ESLint rules/domains с oxlint
  • явно описать gaps по security, n, jsx-a11y, react-compiler, Next/React edge cases и type-aware rules
  • сохранить контракты yarn format, yarn lint, yarn checks lint --changed и CI diagnostics
  • добавить check-mode для formatter, если он нужен CI
  • повторить before/after замеры после настройки конфига

Критерии готовности выполнения задачи

  • yarn format и yarn lint покрыты Oxc для согласованной поверхности
  • CI выдаёт actionable diagnostics для changed files
  • известные gaps имеют явное решение: покрыто Oxc, bounded transition на старом стеке или осознанно dropped
  • production-контур lint/format не тащит Biome/dprint как постоянные дополнительные слои
  • финальный замер показывает существенный прирост скорости на raijin

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions