Вторая запись из серии постов в блоге «Проект Ledger Live Monorepo», в которой разработчик Ledger рассказывает нам историю огромной миграции кодовой базы Ledger Live в монорепозиторий. Если вы пропустили первую часть, посмотрите ее здесь:
Установив, что архитектура монорепозитория является жизнеспособным решением, мы начали изучать доступные инструменты для реализации нашего плана.
Ведение нескольких проектов
В команде Ledger Live мы ориентируемся в экосистеме JavaScript, и, к счастью для нас, мы уже знали несколько способов управления несколькими проектами с помощью нашего менеджера пакетов. Некоторые из этих возможных решений включают в себя:
- NPM (имеет поддержку рабочих пространств, но есть лучшие альтернативы),
- Пряжа 1 (становясь слишком старыми, появляются лучшие и более эффективные альтернативы),
- Пряжа ≥ 2 (интересная идея, но plug n play поддерживается не везде, особенно в React Native),
- ПНПМ (символические ссылки, созданные с учетом рабочих пространств, экономичные по диску).
Посмотрев на все это, мы решили пойти с ПНПМ для:
- эффективность диска (он использует виртуальный магазин и символические ссылки, поэтому пакеты загружаются только один раз, а затем привязываются к вашим node_modules из виртуального хранилища),
- скорость (поскольку пакеты кэшируются, последующие установки происходят намного быстрее),
- встроенная поддержка архитектуры рабочих пространств/монорепо (псевдонимы, оркестровка и т. д.).
На бумаге ПНПМ это абсолютная жемчужина, но правильно настроить символические ссылки было немного странно (опять же, особенно с React Native).
Итак, наш выбор был сделан, мы бы выбрали ПНПМ.
Оркестровка сценариев
Даже если ПНПМ добавляет все больше и больше оркестрации к своим функциям, но по-прежнему не охватывает всего, что мы хотели сделать, например:
- последовательные сборки,
- кэширование.
Для этого мы нашли двух интересных претендентов, на которых нам нужно было обратить внимание:
- NX (от угловой команды),
- Турборепо (который только что анонсировал версию 1.0.0, когда мы начали над ней работать и сейчас работаем с командой Vercel).
Мы проверили концепцию обоих вариантов.
NX имело гораздо больше функций, генераторов, автоматизации, отличных графов зависимостей и т. д., но это добавляло много накладных расходов, и, поскольку это довольно самоуверенно, нам пришлось бы следовать их соглашениям.
Турборепо с другой стороны, это довольно простая функция. Тем не менее, это удобное решение «включай и работай», которое мы можем очень быстро изменить, если когда-нибудь возникнет такая необходимость.
Даже если Турборепо имел меньше функций, чем NX, он сделал две вещи, которые мы искали:
- Оркестрация сборок с учетом дерева зависимостей (и параллельных сборок),
- Кэширование (сборки кэшируются и «воспроизводятся», если их код не изменился).
Это, плюс возможность легкого входа/выхода, заставило нас выбрать новичка в квартале, ТурбоРепо.
Versioning
Мы также рассмотрели несколько решений, но в конечном итоге решили использовать https://github.com/changesets/changesets поскольку это был один из инструментов, рекомендованный TurboRepo, и после небольшого чтения документации он, похоже, соответствовал нашим потребностям.
Разработчикам придется быть немного более строгими в процессе разработки и предоставлять changesets
(файл, описывающий, в какой библиотеке изменяется их код, степень серьезности соответствует Семвер соглашение и описание изменения). Эти changesets
затем используются для автоматического обновления версий пакетов с учетом заданной серьезности, а также для автоматизации создания Информация об изменениях. Кроме того, инструменты позволяют pre release
режиме, 🍒 на 🍰.
Что дальше?
Определившись с инструментами, пришло время приступить к работе. В следующей статье блога мы поговорим о системе сборки и обо всех dev-ops/автоматизации/непрерывной интеграции в контексте монорепозитория.
Валентин ДЕ АЛМЕЙДА
Опыт разработчиков и основные технологии – Ledger Live
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://www.ledger.com/blog/ledger-live-monorepo-project-part-2-the-tools-make-it-shine
- :имеет
- :является
- :нет
- :куда
- 1
- a
- О нас
- Absolute
- добавленный
- Добавляет
- После
- снова
- Все
- позволяет
- уже
- альтернативы
- an
- и
- Угловой
- объявило
- архитектура
- МЫ
- гайд
- AS
- At
- автоматизировать
- автоматически
- автоматизация
- доступен
- основной
- BE
- становление
- Лучшая
- Немного
- Заблокировать
- Блог
- Сообщения в блоге
- изоферменты печени
- строить
- строит
- построенный
- но
- by
- изменение
- менялась
- изменения
- проверка
- выбор
- Выберите
- код
- Codebase
- выходит
- соблюдать
- сама концепция
- параллельный
- контекст
- (CIJ)
- Удобно
- Соглашение
- конвенции
- Основные
- правильно
- может
- чехол для варгана
- решенный
- Решение
- Зависимость
- описывающих
- описание
- Дев
- Застройщик
- DID
- do
- документации
- не
- Падение
- легко
- экосистема
- затрат
- эффективный
- запись
- особенно
- налаживание
- Эфир (ETH)
- НИКОГДА
- многое
- везде
- опыт
- быстрее
- Особенность
- Особенности
- Файл
- поток
- следовать
- после
- Что касается
- К счастью
- найденный
- от
- Драгоценный камень
- поколение
- генераторы
- данный
- Go
- Графики
- большой
- было
- рука
- обрабатывать
- Есть
- здесь
- HTTPS
- огромный
- идея
- if
- in
- включают
- интеграции.
- интересный
- в
- IT
- ЕГО
- JavaScript
- всего
- Дитя
- Ledger
- Ledger Live
- Меньше
- Библиотека
- жить
- посмотреть
- смотрел
- искать
- серия
- сделанный
- сделать
- менеджер
- макс-ширина
- миграция
- против
- пропущенный
- режим
- БОЛЕЕ
- более эффективным
- много
- с разными
- родной
- Откройте
- Необходимость
- необходимый
- потребности
- Новые
- следующий
- сейчас
- of
- Старый
- on
- консолидировать
- ONE
- только
- Упрямый
- оркестровка
- Другое
- наши
- внешний
- пакет
- пакеты
- бумага & картон
- часть
- Часть
- план
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Играть
- штекер
- подключи и играй
- плюс
- возможное
- Блог
- довольно
- Проект
- проектов
- доказательство
- доказательство концепции
- обеспечивать
- положил
- быстро
- реагировать
- Реагировать на родной
- Reading
- Управление по борьбе с наркотиками (DEA)
- хранилище
- относительно
- тщательный
- казалось
- Серии
- установка
- несколько
- строгость
- светить
- с
- So
- Решение
- Решения
- некоторые
- специально
- скорость
- Начало
- и политические лидеры
- По-прежнему
- магазин
- История
- последующее
- такие
- поддержка
- Поддержанный
- система
- взять
- Говорить
- команда
- технологии
- говорит
- чем
- который
- Ассоциация
- The Block
- их
- тогда
- Эти
- вещи
- те
- хоть?
- время
- в
- слишком
- инструментом
- инструменты
- топ
- дерево
- два
- В конечном счете
- us
- используемый
- использования
- v1
- версия
- очень
- жизнеспособный
- Виртуальный
- стремятся
- законопроект
- способы
- we
- ЧТО Ж
- были
- когда
- который
- будете
- WISE
- работает
- бы
- еще
- являетесь
- ВАШЕ
- зефирнет