Смысл package-lock.json
состоит в том, чтобы точно представить дерево , поскольку оно действительно существует в определенный момент времени, чтобы кто-то, клонирующий проект, получил точно то же дерево, что и у вас.
Если вы хотите обновить эту зависимость до более новой версии, просто используйте npm update
и затем подтвердите обновленный package-lock.json
.Другие члены вашей команды получат это обновление как часть обычного процесса получения последней версии.
Подробнее на странице npmjs.com о блокировках пакетов .
Давайте рассмотрим сценарий, когда мы с вами в команде, и наш проект использует nifty-lib
, где package.json
говорит "nifty-lib": "^0.4.0"
, а мы не разделяем package-lock.json
.Возможно, я работал над проектом на пару месяцев дольше, чем вы, и я получил nifty-lib
v0.4.0, когда я его установил.Но когда вы подняли его и установили, вы получили v0.4.1 (обновление с исправлением ошибок, которое, к сожалению, представило новую ошибку).В какой-то момент вы замечаете что-то вроде ошибки в нашем проекте, но я не могу ее воспроизвести.Некоторое время мы вращаемся, пытаясь понять, почему это происходит с тобой, а не со мной.В конце концов, мы понимаем, что на самом деле это ошибка в nifty-lib
, которую они представили в v0.4.1.Надеемся, что тогда мы получим 0.4.2 или что-то в этом роде (или, если его нет, мы исправим ошибку и сделаем пиар, при этом откатившись до 0.4.0 по всему проекту).
Если бы мы былиподелившись package-lock.json
, мы бы не развернулись, задаваясь вопросом, почему проблема произошла с вами, а не со мной, потому что у вас была бы та же версия nifty-lib
, что и у меня.Как часть нашего обычного цикла, мы будем периодически делать npm update
, и если в наших тестах обнаружится новая ошибка, мы узнаем из истории коммитов, что это произошло из-за ошибки в зависимости.
Теперь для «я» и «вы» читайте «dev» и «production».: -)
Именно поэтому package-lock.json
блокирует версию, а package.json
позволяет вам сказать «это или лучше».package-lock.json
сохраняет вашу команду унифицированной в версиях, но вы можете намеренно обновлять с помощью npm update
, который отображается в истории коммитов, чтобы вы могли отслеживать регрессии к нему.