← Ко всем open source проектам

Lerna

lerna/lerna

Lerna — инструмент для управления несколькими JavaScript- и TypeScript-пакетами в одном репозитории.

Форки 2,272
Автор lerna
Язык TypeScript
Лицензия MIT
Обновлено 2026-06-27

Что такое Lerna

Lerna — система управления многопакетными JavaScript-проектами. Lerna помогает запускать задачи, связывать пакеты, считать затронутые изменения и выпускать несколько пакетов из одной кодовой базы.

Когда библиотека разбита на много пакетов, обычные команды быстро превращаются в ручную работу с версиями, зависимостями и публикацией. Поэтому страница полезна не как короткая карточка, а как разбор того, где проект помогает и какую часть задачи берет на себя.

GitHub-репозиторий проекта появился в 2015 году. Для проекта такого типа это важный контекст: он показывает, как долго вокруг него копились код, обсуждения, примеры и привычки сообщества.

Как появился и зачем нужен

Проект появился как практический ответ на рост библиотек, где один репозиторий содержит несколько связанных npm-пакетов.

Главная идея Lerna не в том, чтобы заменить все соседние инструменты. Проект закрывает конкретный участок работы: управление пакетами, задачами и выпусками в одной связанной кодовой базе. Чем точнее команда понимает этот участок, тем проще решить, нужен ли он в стеке.

В этом смысле Lerna стоит рассматривать через практику: какие данные входят, какие действия выполняются, какой результат получается и кто отвечает за поддержку после первого запуска.

Что внутри репозитория

В репозитории находятся TypeScript-код Lerna, команды CLI, логика определения измененных пакетов, тесты и документация.

Lerna работает поверх структуры пакетов и помогает выполнять команды только там, где это нужно, а также выпускать связанные версии.

Такая структура важна для сопровождения. Когда проект попадает в реальную систему, ценность дают не только основные функции, но и тесты, понятная конфигурация, выпуск новых версий и возможность отследить изменение поведения.

Как это используют

Ее используют библиотеки, дизайн-системы, инструменты сборки и команды, которые держат несколько npm-пакетов рядом.

Начинать лучше с инвентаризации пакетов, единого lockfile и одной команды проверки, которую можно прогнать для затронутых частей.

Хороший первый сценарий для Lerna — маленькая проверка на реальных данных или близкой к реальности задаче. Она быстрее показывает ограничения, чем абстрактный просмотр возможностей.

Сильные стороны

Сильная сторона Lerna — понятная модель для связанных пакетов и привычная интеграция с npm-экосистемой.

Проект заметен потому, что многопакетные JavaScript-проекты стали обычной формой больших библиотек и внутренних платформ.

Еще одно преимущество — понятная точка входа. Даже если проект большой, его можно изучать через один сценарий: установить, повторить пример, поменять одну настройку и проверить результат.

Ограничения

Ограничение в том, что сам инструмент не заменяет архитектурные границы между пакетами.

Команде нужно договориться о правилах версионирования, именах пакетов, зависимостях и порядке публикации.

Для долгого использования важно заранее решить, кто обновляет проект, где хранятся настройки, как проверяется новая версия и что делать, если поведение меняется после обновления.

Пример

Запуск задач в пакетах

Пример показывает, как Lerna ограничивает команду нужным пакетом и его окружением.

Язык: Bash
npx lerna run test --scope=@acme/ui
npx lerna run build --since=main