Обоснование , лежащее в основе стратегии публикации пакетов :
Gatsby распространяется как монорепо с использованием lerna. Несколько других крупных проектов с открытым исходным кодом распространяются таким образом, включая babel, реагировать и т. Д. c.
Это означает, что наши файлы CHANGELOG.md распространяются вместе с самим пакетом в каталоге пакетов.
Lerna помогает «Разбить большие кодовые базы на отдельные независимые версии пакетов». Так как Gatsby - это проект с открытым исходным кодом, с множеством различных плагинов, тем, ядра и т. Д. c. Такая философия приводит ко многим постепенным обновлениям во многих пакетах. Поэтому возможна быстрая итерация с сообществом открытого исходного кода:
Разделение больших кодовых баз на отдельные независимые версии пакетов чрезвычайно полезно для совместного использования кода. Однако внесение изменений во многих репозиториях является запутанным и трудно отслеживаемым, а тестирование в репозиториях усложняется очень быстро.
Для решения этих (и многих других) проблем некоторые проекты организуют свои кодовые базы в репозитории с несколькими пакетами. (иногда называемый монорепос). Такие проекты, как Babel, React, Angular, Ember, Meteor, Jest и многие другие, разрабатывают все свои пакеты в одном репозитории.
Lerna - это инструмент, который оптимизирует рабочий процесс вокруг управления многопакетными репозиториями с помощью git и npm.
Lerna также может снизить требования к времени и пространству для многочисленных копий пакетов в средах разработки и сборки - обычно это недостаток разделения проекта на множество отдельных NPM пакетов. Подробности смотрите в документации на подъемник.