Что такое Lerna
Lerna — система управления многопакетными JavaScript-проектами. Lerna помогает запускать задачи, связывать пакеты, считать затронутые изменения и выпускать несколько пакетов из одной кодовой базы.
Когда библиотека разбита на много пакетов, обычные команды быстро превращаются в ручную работу с версиями, зависимостями и публикацией. Поэтому страница полезна не как короткая карточка, а как разбор того, где проект помогает и какую часть задачи берет на себя.
GitHub-репозиторий проекта появился в 2015 году. Для проекта такого типа это важный контекст: он показывает, как долго вокруг него копились код, обсуждения, примеры и привычки сообщества.
Как появился и зачем нужен
Проект появился как практический ответ на рост библиотек, где один репозиторий содержит несколько связанных npm-пакетов.
Главная идея Lerna не в том, чтобы заменить все соседние инструменты. Проект закрывает конкретный участок работы: управление пакетами, задачами и выпусками в одной связанной кодовой базе. Чем точнее команда понимает этот участок, тем проще решить, нужен ли он в стеке.
В этом смысле Lerna стоит рассматривать через практику: какие данные входят, какие действия выполняются, какой результат получается и кто отвечает за поддержку после первого запуска.
Что внутри репозитория
В репозитории находятся TypeScript-код Lerna, команды CLI, логика определения измененных пакетов, тесты и документация.
Lerna работает поверх структуры пакетов и помогает выполнять команды только там, где это нужно, а также выпускать связанные версии.
Такая структура важна для сопровождения. Когда проект попадает в реальную систему, ценность дают не только основные функции, но и тесты, понятная конфигурация, выпуск новых версий и возможность отследить изменение поведения.
Как это используют
Ее используют библиотеки, дизайн-системы, инструменты сборки и команды, которые держат несколько npm-пакетов рядом.
Начинать лучше с инвентаризации пакетов, единого lockfile и одной команды проверки, которую можно прогнать для затронутых частей.
Хороший первый сценарий для Lerna — маленькая проверка на реальных данных или близкой к реальности задаче. Она быстрее показывает ограничения, чем абстрактный просмотр возможностей.
Сильные стороны
Сильная сторона Lerna — понятная модель для связанных пакетов и привычная интеграция с npm-экосистемой.
Проект заметен потому, что многопакетные JavaScript-проекты стали обычной формой больших библиотек и внутренних платформ.
Еще одно преимущество — понятная точка входа. Даже если проект большой, его можно изучать через один сценарий: установить, повторить пример, поменять одну настройку и проверить результат.
Ограничения
Ограничение в том, что сам инструмент не заменяет архитектурные границы между пакетами.
Команде нужно договориться о правилах версионирования, именах пакетов, зависимостях и порядке публикации.
Для долгого использования важно заранее решить, кто обновляет проект, где хранятся настройки, как проверяется новая версия и что делать, если поведение меняется после обновления.
Пример
Запуск задач в пакетах
Пример показывает, как Lerna ограничивает команду нужным пакетом и его окружением.
npx lerna run test --scope=@acme/ui
npx lerna run build --since=main