Monorepo Ops · kb-devkit

150+ пакетов. Один граф.

kb-devkit оркестрирует монорепо: топологическая сборка, content-addressable кэш, --affected по git diff, health score по presets. Мы собираем KB Labs им каждый день.

Сборка

Меняешь один пакет — пересобирается только цепочка.

Граф зависимостей + топологический порядок + content-addressable кэш по SHA256. Одинаковый контент — 0ms, независимо от числа пакетов.

kb-devkit run buildСборка всех пакетов в топологическом порядке. SHA-кэш — пропускает неизменённые.
kb-devkit run build --affectedСборка только изменённых пакетов и их зависимостей.
kb-devkit run build --packages @kb-labs/workflow-entryТочечная сборка конкретного пакета.
kb-devkit run build lint testЦепочка задач в одном запуске, каждая в правильном порядке.
bash
$ kb-devkit run build --affected

  Detected 3 changed packages (git strategy)

  @kb-labs/core-types  building   [1.4s]
  @kb-labs/core-platform  building   [2.1s]
  @kb-labs/sdk  building   [3.2s]
  @kb-labs/commit-core  building   [0.9s]
  @kb-labs/commit-entry  building   [1.3s]
  @kb-labs/qa-entry  cached     [0ms]
  @kb-labs/quality-entry  cached     [0ms]
  @kb-labs/review-entry  cached     [0ms]

  Done in 9.4s  ·  5 built  ·  113 from cache
Health

Health score. Checks. Auto-fix.

Статический аудит каждого пакета по presets: ESLint-конфиг, TSConfig, README, engines, exports. Health score 0–100 с грейдом A–F — по категориям сразу видно где деградация.

Нужна своя логика? custom_checks в devkit.yaml — shell-команда, которая получает JSON с контекстом пакета и возвращает {"issues": [...]}. Лицензионные заголовки, barrel exports, naming conventions — всё что угодно.

kb-devkit checkВалидация всех пакетов по правилам devkit.yaml: именование, tsconfig, eslint, deps.
kb-devkit statsОценка здоровья воркспейса (A–F), количество проблем по категориям.
kb-devkit fixАвто-исправление безопасных нарушений. --dry-run для предпросмотра.
kb-devkit gateПроверка только staged-файлов. Код выхода 1 при нарушениях. Для pre-commit хуков.
pnpm kb plugins listСписок всех установленных плагинов с версией и статусом.
bash
$ kb-devkit stats

  KB Devkit Workspace Stats

  Health Score   72/100  Grade C
  (98 healthy, 12 warning, 8 error of 118 total)

  By category
  go-binary       ████████████  7/7    Grade A
  ts-lib          ██████████░░  77/93  Grade B
  ts-app          ████████░░░░  14/18  Grade C

  Issues by check
  structure         3 errors  8 warnings  in 11 packages
  package_json      2 errors  4 warnings  in  6 packages
  eslint            1 error   2 warnings  in  3 packages

  Coverage (TS packages)
 ESLint config    94%  (104/111)
 TSConfig         98%  (109/111)
 README.md        61%   (68/111)
 engines field    72%   (80/111)
 exports field    91%  (101/111)
Impact

Что сломается. Что тестировать.

Impact плагин строит обратный граф и показывает каскад: direct → dependent → transitive пакеты. Тесты — только те, что реально задеты. Build-план сразу с командой для devkit.

kb-devkit run build --affectedПоиск affected-сета через git diff + BFS по графу зависимостей.
pnpm kb impact analyzeПоказать какие пакеты и тесты затронуты текущими изменениями.
pnpm kb impact reportЭкспорт структурированного impact-отчёта с путями зависимостей.
pnpm kb marketplace plugins refreshПринудительная инвалидация CLI-кэша после сборки.
kb impact:check
$ kb impact:check

  📦 Package Impact
    Direct (1):
      @kb-labs/core-types — 3 files changed
    Dependent (4):
      @kb-labs/core-platform  ← core-types
      @kb-labs/sdk            ← core-platform
      @kb-labs/commit-core    ← sdk
      @kb-labs/commit-entry   ← commit-core

  🔨 Build Impact  (5 packages in order)
    1. @kb-labs/core-types
    2. @kb-labs/core-platform
    3. @kb-labs/sdk
    4. @kb-labs/commit-core
    5. @kb-labs/commit-entry
    → kb-devkit run build --packages ...

  🧪 Test Impact
    Must run (2):
      @kb-labs/core-types   — 2 test files  ← changed
      @kb-labs/commit-core  — 5 test files  ← sdk
Установить

Граф. Кэш. Impact. Всё в одном.

kb-devkit идёт с платформой. Impact — отдельный плагин.

kb marketplace install @kb-labs/impact-entry
Операции с монорепо — KB Labs