Поместите оба пакета в отдельные репозитории, а в файл package.json
первого поместите зависимость от репозитория git второго. Это выглядит следующим образом:
"dependencies": {
"my-other-package": "git://github.com/user/project.git#commit-ish"
}
Подробнее о доступных параметрах синтаксиса см. Документацию npm .
Таким образом, обе команды могут работать над своими пакетами индивидуально и независимо друг от друга. В то же время можно ссылаться на пакет через его git url, и вы даже можете закрепить определенную ветку, тег или коммит, указав его commit-ish
.
В случае, если вы используете GitHub для управления вашими git-репозиториями, вы также можете использовать сокращенный синтаксис:
"dependencies": {
"my-other-package": "user/project#commit-ish"
}
Это также работает для частных репозиториев, но только для GitHub. В случае другого решения для git-хостинга вам нужно использовать синтаксис, упомянутый выше.
Поскольку вы упомянули, что зависимая команда хочет использовать последнюю версию без особых проблем, вы можете просто захотеть использовать что-то вроде #master
в качестве коммит-иша. Затем на каждом npm install
вы получаете последнюю версию, которая зафиксирована в основной ветви.
Обратите внимание, что это приводит к невоспроизводимым сборкам, поскольку вы не можете детерминистически предсказать, что будет установлено. Исходя из моего личного опыта, я бы рекомендовал прикрепить ваши зависимости к конкретному коммиту. Хотя это больше работы по обслуживанию, это приводит к воспроизводимым и предсказуемым установкам, которые, по моему мнению, стоят много, но YMMV.
Большим преимуществом этого подхода является то, что обеим командам не нужно заботиться друг о друге в отношении публикации или подобных вещей, поскольку вы можете зависеть от пакета извне, даже если команда не управляет пакетом, даже не зная что кто-то другой использует его.
Если по какой-либо причине абсолютно необходимо БЫЛ быть одним хранилищем, и вы не можете использовать описанный мной подход, вас может заинтересовать термин «монорепо». В основном это концепция наличия единого (моно) хранилища для нескольких пакетов. Один из инструментов для управления таким монорепо - это Lerna , и вы можете рассмотреть его поближе.