Я так взволнован сообществом 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.
Спасибо за чтение. Я с нетерпением жду возможности исследовать вместе с вами мир многопакетных монорепозиториев. Пожалуйста, оставьте любые предложения в комментариях.