Какова стратегия выпуска gatsbyjs - PullRequest
3 голосов
/ 29 апреля 2020

Может, кто-нибудь расскажет или объяснит мне обоснование стратегии публикации пакетов? Я хотел бы знать, почему существует так много выпусков «только с измененной версией», это делает изменения слишком многословными и => затрудняет своевременное обновление пакетов. Это также делает версию более сложной.

например https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/CHANGELOG.md

1 Ответ

0 голосов
/ 30 апреля 2020

Обоснование , лежащее в основе стратегии публикации пакетов :

Gatsby распространяется как монорепо с использованием lerna. Несколько других крупных проектов с открытым исходным кодом распространяются таким образом, включая babel, реагировать и т. Д. c.

Это означает, что наши файлы CHANGELOG.md распространяются вместе с самим пакетом в каталоге пакетов.

Lerna помогает «Разбить большие кодовые базы на отдельные независимые версии пакетов». Так как Gatsby - это проект с открытым исходным кодом, с множеством различных плагинов, тем, ядра и т. Д. c. Такая философия приводит ко многим постепенным обновлениям во многих пакетах. Поэтому возможна быстрая итерация с сообществом открытого исходного кода:

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

Для решения этих (и многих других) проблем некоторые проекты организуют свои кодовые базы в репозитории с несколькими пакетами. (иногда называемый монорепос). Такие проекты, как Babel, React, Angular, Ember, Meteor, Jest и многие другие, разрабатывают все свои пакеты в одном репозитории.

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

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

...