Build System · Go

Сборка 100 пакетов за секунду.

Content-addressable кэш, параллельное выполнение и обнаружение затронутых пакетов. kb-devkit запускает только то, что действительно изменилось.

Terminal
$_
Конфигурация

Один файл. Любой монорепо.

Положи devkit.yaml в корень репозитория. kb-devkit найдёт все пакеты автоматически и запустит задачи в правильном порядке, учитывая зависимости между пакетами.

Поддерживает pnpm, npm, yarn workspaces. Внутри KB Labs управляет сборкой 125+ пакетов.

yaml
schemaVersion: 2

workspace:
  discovery:
    - "packages/**"

tasks:
  build:
    command: tsup
    inputs: ["src/**", "tsup.config.ts", "tsconfig*.json"]
    outputs: ["dist/**"]
    deps: ["^build"]

  lint:
    command: eslint src/
    inputs: ["src/**", "eslint.config.*"]
    outputs: []

  test:
    command: vitest run --passWithNoTests
    inputs: ["src/**", "test/**"]
    deps: ["build"]

affected:
  strategy: git
Команды

Всё поддаётся автоматизации.

kb-devkit run buildЗапустить задачу build для всех пакетов с кэшем и параллельным выполнением.
kb-devkit run build lint test --affectedВыполнить build, lint, test только для пакетов, изменённых в git, и их downstream-зависимостей.
kb-devkit run build --no-cacheПропустить чтение и запись кэша для этого запуска. Артефакты не восстанавливаются.
kb-devkit checkПроверить все пакеты по правилам из devkit.yaml: именование, tsconfig, eslint, зависимости, структура.
kb-devkit fixПрименить безопасные автоматические исправления для нарушений, найденных командой check.
kb-devkit statsПоказать health score (A–F), количество проблем по категориям и метрики покрытия по всем пакетам.

Все команды поддерживают --json для скриптов и CI

Как это работает

Детали, которые важны.

Content-addressable кэш

SHA256 входных файлов → ключ кэша. Попадание — артефакты восстанавливаются за ~1ms. Промах — задача выполняется и результат сохраняется. Один файл в двух пакетах хранится один раз.

Затронутые пакеты + downstream BFS

Находит пакеты, изменённые в git. Затем обходит граф обратных зависимостей BFS и включает всех downstream-потребителей. Три стратегии: git, submodules, command.

DAG-планировщик

Зависимости задач образуют граф. Алгоритм Кана разбивает его на слои: пакеты внутри слоя выполняются параллельно, слои — последовательно.

Установить

Один бинарник. Любой TypeScript/Node.js монорепо.

curl -fsSL https://kblabs.ru/kb-devkit/install.sh | sh
kb-devkit — KB Labs