Согласно npm документам :
package-lock.json автоматически генерируется для любых операций, где npm изменяет либо дерево node_modules, либо пакет.json.Он описывает точное сгенерированное дерево, так что последующие установки могут генерировать идентичные деревья независимо от промежуточных обновлений зависимостей.
Этот файл предназначен для фиксации в исходных репозиториях и предназначен для различных целей:
Опишите единственное представление дерева зависимостей так, чтобы товарищи по команде, развертывания и непрерывная интеграция гарантированно устанавливали точно такие же зависимости.
Предоставляют пользователям возможность «путешествовать во времени» в предыдущие состоянияof node_modules без обязательной фиксации самого каталога.
Для облегчения большей наглядности изменений дерева с помощью читаемых исходных кодов различий.
И оптимизация процесса установки, позволяя npm пропускать повторяющиеся разрешения метаданных для ранее-установленные пакеты.
В package.json
вы указываете, какие пакеты npm вы используете в своем приложении.Другими словами, от которых у вас есть конкретная зависимость, чтобы ваш пакет мог функционировать.
package-lock.json
- это большая «карта» каждого из пакетов , ваше приложение использует и ихзависимости , на которые вы не можете повлиять.
В вашем случае grunt-angular-translate
имеет свою собственную зависимость от "lodash": "~2.4.1"
, и вы не можете изменить ее и не должны пытаться сделать это, поскольку этот пакетпредполагается, что он будет работать с этой версией, а не с пакетом более поздней версии 2, где может быть множество критических изменений.
Вы можете обновить свою прямую зависимость от lodash до последней версии, но это не приведет к обновлению grunt-angular-translate
зависимость от этой версии, и это действительно не должно.
Что действительно должно произойти, так это то, что в вашей папке node_modules
вы получите обновленный lodash (и вы можете проверить, посмотрев его package.json и версию внутри).В той же папке, если вы заходите в папку grunt-angular-translate
и смотрите ее собственную node_modules
... она должна иметь свою собственную папку lodash с lodash 2.4.1
в ней.