«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Освоение Lerna: руководство по управлению монорепозиториями JavaScript

Освоение Lerna: руководство по управлению монорепозиториями JavaScript

Опубликовано 1 ноября 2024 г.
Просматривать:665

Mastering Lerna: A Guide to Managing JavaScript Monorepos

Оглавление

  1. Введение
  2. Глава 1: Что такое Лерна?
    • Почему монорепозиторий?
  3. Глава 2: Установка и настройка Lerna
    • Предварительные требования
    • Пошаговое руководство по установке
    • Настройка вашего первого проекта в Лерне
  4. Глава 3: Управление зависимостями в Лерне
    • Независимые зависимости
    • Поднятие общих зависимостей
    • Пакеты начальной загрузки
  5. Глава 4: Запуск сценариев в пакетах
    • Глобальное выполнение сценариев
    • Таргетинг на определенные пакеты
  6. Глава 5: Создание версий и публикация с помощью Lerna
    • Фиксированный режим и независимый режим
    • Публикация пакетов в npm
  7. Глава 6: Использование Lerna с рабочими пространствами Yarn
    • Включение рабочих пространств Yarn в Lerna
    • Оптимизация рабочего процесса с помощью рабочих пространств Lerna Yarn
  8. Глава 7: Продвинутое использование Lerna
    • Команды фильтрации
    • Создание пользовательских команд
  9. Глава 8: Лучшие практики для монорепозиториев Lerna
    • Логическая организация пакетов
    • Автоматизация тестов и сборок
    • Интеграция CI/CD
  10. Заключение
  11. Приложение: Общие команды Lerna

Введение

Управление крупномасштабными проектами JavaScript или TypeScript, включающими множество взаимозависимых пакетов, может стать серьезной проблемой для разработчиков и групп разработчиков. Часто разработчики полагаются на несколько репозиториев для каждого пакета, что приводит к накладным расходам на обслуживание кода, управление зависимостями и совместную работу.

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

Эта электронная книга представляет собой полное руководство по использованию Lerna для эффективного управления монорепозиториями. Независимо от того, имеете ли вы дело с библиотекой компонентов или крупномасштабным проектом с несколькими взаимосвязанными пакетами, вы найдете ценную информацию, которая поможет вам максимизировать вашу производительность с помощью Lerna.


Глава 1: Что такое Лерна?

Lerna — это инструмент с открытым исходным кодом, который упрощает управление несколькими пакетами в монорепо. Он предлагает мощные функции, такие как автоматическое управление зависимостями, управление версиями и публикацию, что упрощает поддержку масштабных проектов JavaScript и TypeScript.

Почему монорепозиторий?

Монорепос — архитектурный выбор для многих крупномасштабных проектов, поскольку он дает ряд преимуществ:

  • Общая кодовая база: с монорепозиториями повторное использование кода упрощается. Это уменьшает дублирование и обеспечивает согласованность между проектами.
  • Упрощенное сотрудничество: разработчики могут работать вместе более эффективно, когда все пакеты находятся в одном месте.
  • Унифицированные процессы сборки: стандартизация сборки, тестирования и развертывания нескольких пакетов становится проще.

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


Глава 2: Установка и настройка Lerna

Предварительные требования

Перед началом убедитесь, что у вас установлены Node.js и npm (или Yarn). Lerna совместима как с npm, так и с Yarn.

Шаг 1: Установка Lerna

Вы можете установить Lerna глобально через npm:

npm install --global lerna

Альтернативно вы можете добавить Lerna в качестве зависимости разработки вашего проекта:

npm install --save-dev lerna

Шаг 2. Инициализация монорепозитория Lerna

После установки инициализируйте монорепозиторий, перейдя в каталог проекта и выполнив:

lerna init

При этом будут созданы необходимые файлы конфигурации, включая lerna.json, и установлена ​​папка пакетов, в которой будут находиться ваши отдельные пакеты.

Шаг 3. Добавление пакетов

В проекте Lerna каждый пакет находится в отдельной подпапке в packages. Каждый пакет должен иметь собственный файл package.json для управления зависимостями.

Пример структуры:

/my-project
  /packages
    /package-a
    /package-b
  lerna.json
  package.json

Глава 3: Управление зависимостями в Лерне

Управление зависимостями между несколькими пакетами — одна из основных сильных сторон Lerna.

Независимые зависимости

Lerna позволяет добавлять зависимости к конкретному пакету. Например, если lodash нужен только package-a, вы можете запустить:

lerna add lodash --scope=package-a

Поднятие общих зависимостей

Если несколько пакетов имеют общие зависимости, вы можете поднять эти зависимости в корень вашего монорепозитория. Это уменьшает избыточность и ускоряет установку. Чтобы включить подъем, добавьте это в lerna.json:

{
  "hoist": true
}

Начальная настройка

Чтобы установить зависимости и связать пакеты, которые зависят друг от друга, выполните:

lerna bootstrap

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


Глава 4: Запуск сценариев в пакетах

Lerna упрощает выполнение сценариев (например, сборку, тестирование, проверку) во всех пакетах вашего монорепозитория.

Глобальное выполнение сценариев

Чтобы запустить скрипт, подобный сборке, для всех пакетов, используйте:

lerna run build

Таргетинг на определенные пакеты

Если вы хотите запускать скрипт только в определенных пакетах, используйте флаг --scope:

lerna run test --scope=package-a

Эта гибкость обеспечивает более целенаправленное выполнение, экономя время во время разработки.


Глава 5: Создание версий и публикация с помощью Lerna

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

1. Фиксированный режим

В фиксированном режиме все пакеты имеют один и тот же номер версии. При обновлении любого пакета номер версии увеличивается для всех.

2. Независимый режим

В независимом режиме каждый пакет имеет свой номер версии. При изменении пакета обновляется только его версия.

Чтобы переключиться в независимый режим, измените lerna.json:

{
  "version": "independent"
}

Публикационные пакеты

Чтобы опубликовать пакеты в npm, выполните:

lerna publish

Lerna будет управлять версиями и публикацией на основе вашей конфигурации.


Глава 6: Использование Lerna с рабочими пространствами Yarn

Объединение Lerna с Yarn Workspaces может еще больше оптимизировать управление зависимостями за счет увеличения еще большего количества общих зависимостей.

Чтобы включить рабочие пространства Yarn, измените файл lerna.json:

{
  "npmClient": "yarn",
  "useWorkspaces": true
}

Затем обновите package.json:

{
  "workspaces": ["packages/*"]
}

Эта интеграция повышает производительность и упрощает управление крупномасштабными проектами.


Глава 7: Продвинутое использование Lerna

Команды фильтрации

Lerna позволяет фильтровать запуск команд для определенных пакетов или исключать определенные пакеты.

Пример запуска для определенных пакетов:

lerna run build --scope=package-a --scope=package-b

Пример исключения пакетов:

lerna run build --ignore=package-c

Пользовательские команды

Вы можете определить собственные команды Lerna в package.json для специализированных рабочих процессов. Эти команды затем можно будет запускать в ваших пакетах.


Глава 8: Лучшие практики для монорепозиториев Lerna

  1. Логическая организация пакетов: группируйте связанные пакеты вместе для лучшего повторного использования кода.
  2. Используйте подъем: подъем общих зависимостей экономит место и ускоряет установку.
  3. Автоматическое тестирование: используйте lerna run для автоматизации тестирования всего монорепозитория.
  4. Конвейеры CI/CD: реализуйте рабочие процессы непрерывной интеграции и развертывания для автоматического тестирования и развертывания изменений.
  5. Рабочие пространства Yarn: используйте рабочие пространства Yarn с Lerna для лучшего управления зависимостями.

Заключение

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

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


Приложение: Общие команды Lerna

  • lerna init: инициализирует монорепозиторий Lerna.
  • lerna bootstrap: устанавливает зависимости и связывает пакеты.
  • lerna add [package] --scope=[имя-пакета]: добавляет зависимость к определенному пакету.
  • lerna run [script]: запускает скрипт для всех пакетов.
  • lernaPublish: публикует пакеты в npm.

Удачного программирования :)

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/samuel_kinuthia/mastering-lerna-a-guide-to-managing-javascript-monorepos-4f2b?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3