如何更新package-lock.json中一个软件包的依赖关系

时间:2019-05-15 13:02:57

标签: npm lodash npm-install

我们想将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",

package-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 :(得分:0)

根据npm docs

  

package-lock.json 会自动为以下任何操作生成   npm修改node_modules树或package.json。它   描述所生成的确切树,以便随后   安装能够生成相同的树,无论   中间依赖项更新。

     

该文件旨在提交到源存储库中,并且   有多种用途:

     

描述依赖关系树的单个表示,以便   保证队友,部署和持续集成   安装完全相同的依赖项。

     

为用户提供“时间旅行”到以前状态的功能   node_modules,而不必提交目录本身。

     

通过可读性提高树更改的可见性   源代码控制差异。

     

并通过允许npm跳过重复来优化安装过程   以前安装的软件包的元数据分辨率。

package.json中,指定要在应用程序中使用的npm软件包。换句话说,您具有特定的依赖性,以便您的程序包可以正常工作。

package-lock.json您的应用程序使用的每个包其依赖项的一个大“地图”,您不会对其产生影响。

在您的情况下,grunt-angular-translate"lodash": "~2.4.1"具有自己的依赖性,并且您无法更改它,也不应尝试这样做,因为该软件包应该与该版本一起使用,并且不适用于2个更高版本的软件包,其中可能会有很多重大更改。

您可以将lodash的直接依赖关系升级到最新版本,但是不会将grunt-angular-translate依赖关系更新为lodash到该版本,实际上不应该。

真正应该发生的是在您的node_modules文件夹中,您将获得更新的lodash(并且可以通过查看其package.json和其中的版本进行检查)。在同一文件夹中,如果您进入grunt-angular-translate文件夹并查看其自己的node_modules ...,则它应该具有自己的lodash文件夹,其中包含lodash 2.4.1