Как обновить зависимость одного пакета, который находится в package-lock.json - PullRequest
0 голосов
/ 15 мая 2019

Мы хотим обновить версию lodash до 4.17.11, но это зависимость grunt-angular-translate. grunt-angular-translate находится в package.json. Если я обновляю grunt-angular-translate до 0.3.0, он не обновляет lodash до версии 4.7.11. Как мы можем обновить зависимость, которая находится в package-lock.json.

package.json:

"devDependencies": {
    "grunt": "^1.0.3",
    "grunt-angular-translate": "^1.0.0",
    "grunt-bump": "^0.8.0",

Пакет-lock.json:

"grunt-angular-translate": {
      "version": "0.3.0",
      "resolved": "https://registry.npmjs.org/grunt-angular-translate/-/grunt-angular-translate-0.3.0.tgz",
      "integrity": "sha1-vQEYr6JNj1cCMf2NUtgp2AjFEbM=",
      "dev": true,
      "requires": {
        "flat": "^1.2.0",
        "json-stable-stringify": "^1.0.0",
        "lodash": "~2.4.1"
      },
      "dependencies": {
        "lodash": {
          "version": "2.4.2",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
          "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
          "dev": true
        }
      }
    },

1 Ответ

0 голосов
/ 16 мая 2019

Согласно 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 в ней.

...