Сборка 100 пакетов за 1 секунду.
Content-addressable кэш, параллельное выполнение и обнаружение затронутых пакетов. kb-devkit запускает только то, что действительно изменилось.
Знакомо.
Правишь один пакет, ждёшь сборку всех ста. Снова. CI занимает 12 минут, хотя изменилось три строчки.
kb-devkit run build --affected. Строит только то, что затронуто, — и всё, что от этого зависит.
Запускаешь сборку снова. Ничего не изменилось, но она всё равно идёт полные 10 минут. Ты тратишь время, чтобы просто убедиться.
Content-addressable кэш восстанавливает артефакты за ~1ms. Если входные файлы не изменились — задача помечается как cached.
У каждого пакета своя схема команд. В одном npm run build, в другом make, в третьем что-то самописное. Невозможно запустить всё единообразно.
Один devkit.yaml в корне репозитория. Одна команда запускает build, lint, test — для всех пакетов, в правильном порядке.
Один файл конфигурации.
Положите devkit.yaml в корень репозитория. Объявите задачи и пресеты один раз — kb-devkit найдёт все пакеты автоматически.
Задачи поддерживают зависимости (^build = сначала собрать все deps), content-addressable кэш и параллельное выполнение. Используйте cache: false для задач с побочными эффектами.
version: 1
workspace:
packageManager: pnpm
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/**"]
outputs: ["coverage/**"]
deps: ["build"]
deploy:
command: ./scripts/deploy.sh
inputs: ["dist/**"]
cache: false
affected:
strategy: submodulesКак это работает
Детали, которые важны, когда монорепо вырастает.
Content-addressable кэш
SHA256 входных файлов → ключ кэша. Попадание — артефакты восстанавливаются за ~1ms. Промах — задача выполняется и результат сохраняется. Один файл в двух пакетах хранится один раз.
Затронутые пакеты + downstream BFS
Находит пакеты, изменённые в git. Затем обходит граф обратных зависимостей BFS и включает всех downstream-потребителей. Три стратегии: git, submodules, command.
DAG-планировщик
Зависимости задач образуют граф. Алгоритм Кана разбивает его на слои: пакеты внутри слоя выполняются параллельно, слои — последовательно.
Проверки качества
Команды check, fix, stats валидируют пакеты по правилам из devkit.yaml: именование, tsconfig, eslint, зависимости, структура файлов.
Структурированный JSON-вывод
Флаг --json на каждой команде. Удобно для CI-пайплайнов, агентных сценариев и отладки. Envelope идентичен check --json.
Любой TypeScript/Node.js монорепо
Не требует специфической структуры. Внутри KB Labs управляет сборкой 125+ пакетов из 18 монорепо. Работает с pnpm, npm и yarn workspaces.
Команды
Все команды поддерживают --json для скриптов и агентных сценариев.
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), количество проблем по категориям и метрики покрытия по всем пакетам.
kb-devkit doctor --jsonДиагностика окружения: конфиг, node, pnpm, go. Возвращает подсказки для каждой проблемы.
kb-devkit gatePre-commit gate: проверяет только staged-файлы. Завершается с кодом 1 при нарушениях.
Скачать
Готовые бинарники для macOS, Linux и Windows. SHA-256 чексуммы включены в каждый релиз.
Часть KB Labs
kb-devkit поставляется как самостоятельный инструмент и как часть платформы KB Labs. При установке KB Labs kb-devkit включается автоматически.
Установить KB Labs →