我们想将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
}
}
},
答案 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
。