По крайней мере, в первой части вашего вопроса (модуль А всегда использует последнюю версию модуля В), вы всегда можете указать зависимость в вашем package.json
с major version wildcard:
{
"dependencies": {
"moduleB": "*"
}
}
Какой бы тогда позволить вы всегда npm update
до последней версии. (Это могло бы, однако, потенциально повлиять на внесение изменений, которые нарушают совместимость в обратном направлении в вашем модуле, поскольку npm использует Semantic Versioning.)
Что касается работы npm update
, то я должен спросить - зачем это необходимо? Какая польза для пользователей вашего модуля? Вы должны быть, по крайней мере, «кураторскими» обновлениями своих зависимостей, чтобы не вводить никаких изменений. Если вы создали полный автоматический конвейер для обновления зависимостей (от npm update
зависимых от git tag
новых версий до npm version
этих новых версий до npm publish
, например, таких новых версий), вы как бы убираете пользователей своего модуля на холоде, если любой из этих шагов нарушит совместимость с их кодом.
(Кроме того, если эта автоматическая зависимость обновления никогда перерывов вашего модуля, то, что ваш модуль добавления? Является ли это даже делать что-нибудь нетривиальное с зависимостями?)
Это может показаться громоздким, но это более эффективная практика обновления ваших зависимостей с помощью некоторых ремесел и намерений. See Semantic Versioning for more info.
Спасибо @wisew за указатели! Причина, по которой «обновление npm» должна произойти автоматически, заключается в том, что 1. Модуль B также будет опубликован мной 2. Обновления модуля B будут критическими исправлениями ошибок. Идея состоит в том, чтобы абстрагировать часто обновляемую (с исправлениями) часть экосистемы в отдельный модуль, и все остальные модули будут иметь «зависимость» от нее. Модуль B будет курировать до публикации в NPM. Я хочу, чтобы потребители модуля A получали кураторские версии модуля B с критическими исправлениями без их вмешательства. – CodeNinja