Ru|En
Ilya Yefimovich

Монорепин

Монорепозитории для уставших

Скачать для Linux (x86_64)

Другие платформы:

Это что такое?

Монорепин — это таск-раннер для монорепозиториев. Он сам находит все пакеты в репозитории, разбирается в зависимостях между ними и запускает задачи. Причём делает это умно: если ничего не поменялось — лишнего не пересобирает.

Основные понятия

Корень репозитория — это папка, где лежит файл monorepin.json. Монорепин ищет его, поднимаясь вверх от текущей директории. Так он понимает, где начинается ваш монорепозиторий.

Пакет — это подпапка с файлом repin.json. Внутри описаны задачи для этого пакета. Имя пакета — это просто название папки.

monorepin.json — маркер корня репозитория. Пока что он просто нужен, чтобы Монорепин знал, где остановиться:

{}

repin.json — конфиг пакета. Тут вы описываете задачи, команды и зависимости:

{
  "tasks": {
    "build": { "cmd": "npm run build" },
    "test": {
      "cmd": "npm test",
      "deps": ["build"]
    }
  }
}

Как он находит пакеты?

Монорепин обходит всё дерево директорий от корня и ищет файлы repin.json. При этом он автоматически пропускает всякий мусор:

node_modules, vendor, _build, .git, _opam, target, dist, build

Любая папка с repin.json внутри становится пакетом.

Как запускать задачи

# Запустить задачу в конкретном пакете
repin package:task

# Запустить задачу во ВСЕХ пакетах
repin :build

# Несколько задач подряд
repin lib:build api:build

# Посмотреть, что бы запустилось (без реального запуска)
repin --dry-run :test

# Пересобрать всё, даже если ничего не менялось
repin --force :build

Поля задач

Поле Обязательно Что делает
cmd Да Команда для выполнения
deps Нет Список зависимостей: ["build"] или ["other_pkg:build"]
always_run Нет Если true — задача выполняется всегда, даже если ничего не менялось

Инкрементальные сборки

Монорепин запоминает состояние пакетов в .monorepin/state.json. Если пакет не менялся с последнего успешного запуска — задача пропускается. Если это не то, что вам нужно — добавьте "always_run": true или запустите с флагом --force.

MCP-сервер для ИИ-ассистентов

Монорепин может работать как MCP-сервер (Model Context Protocol). Это позволяет ИИ-ассистентам вроде Claude взаимодействовать с вашим монорепозиторием — смотреть пакеты, задачи, зависимости и запускать сборки.

# Запустить как MCP-сервер
repin --mcp

# Добавить в Claude Code CLI
claude mcp add --transport stdio monorepin -- repin --mcp

Доступные инструменты: list_packages, list_tasks, get_task_info, get_dependency_graph, get_state, get_affected_packages, run_task.