Я так взволнован сообществом Javascript. Серьезно, я не был так взволнован инструментальной системой с тех пор, как узнал о NPM и менеджерах пакетов в целом на своей второй работе в качестве профессионального разработчика.

Многие языки имеют сильные системы зависимостей, которые позволяют использовать организационный шаблон, известный как Multi-Package Monorepo. Это причудливая фраза для одного репо с несколькими выходными пакетами.

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

Я собираюсь представить эти концепции постепенно и по частям.

Давайте начнем с создания простого репозитория, на котором мы будем учиться в будущем. Мы будем использовать LernaJS. Он простой, мощный и допускает множество различных конфигураций и обработку зависимостей.

Я не могу сказать это лучше, чем люди, которые сделали проект, так что это Verbatim с Lerna.js.org.

Начнем с глобальной установки Lerna с помощью npm:

Lerna 2.x рекомендуется для начала.

npm install --global lerna

Далее мы создадим новый репозиторий git:

git init lerna-repo && cd lerna-repo

А теперь давайте превратим его в репозиторий Lerna:

lerna init

Теперь ваш репозиторий должен выглядеть так:

lerna-repo/
  packages/
  package.json
  lerna.json

Это довольно просто. Он еще ничего не делает, но в нем есть все, что нам нужно для начала. Вы, вероятно, знакомы с package.json, но каталог packages и lerna.json новые. packages это именно то, на что это похоже. Сюда вы будете помещать каждый разрабатываемый вами пакет. Мы можем структурировать наш каталог packages множеством разных способов, но суть в том, что для каждой развертываемой или вспомогательной библиотеки у вас будет каталог внутри packages для ее хранения.

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

Это уже становится ужасно затянутым. В следующий раз я расскажу вам, как начать добавлять свои пакеты, чтобы у вас были «Развертываемый» и «Поддерживающий» пакеты.

Я бы порекомендовал ознакомиться с командами LernaJS, которые можно найти на Lerna Github.

Спасибо за чтение. Я с нетерпением жду возможности исследовать вместе с вами мир многопакетных монорепозиториев. Пожалуйста, оставьте любые предложения в комментариях.