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

Npm 如何更新package-lock.json中一个包的依赖关系,npm,lodash,npm-install,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-a

我们想将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
        }
      }
    },
根据:

package lock.json会自动为以下操作生成: npm修改节点_模块树或package.json。信息技术 描述生成的确切树,以便后续 安装能够生成相同的树,而不管 中间依赖项更新

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

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

为用户提供一个设施,使其能够“时间旅行”到以前的状态 无需提交目录本身的节点\ u模块

通过可读的 源代码控制差异

并通过允许npm跳过重复安装来优化安装过程 以前安装的包的元数据解析

package.json
中,指定应用程序中使用的npm包。换句话说,您有一个特定的依赖项,因此您的包可以运行

package lock.json
是应用程序使用的每个包的一个大“地图”和它们的依赖关系,您无法影响它们

在您的情况下,
grunt angular translate
“lodash”有自己的依赖关系:“~2.4.1”
,您不能更改它,也不应该尝试更改,因为该包应该与该版本一起使用,而不是与可能有大量破坏性更改的更高版本的包一起使用

您可以将lodash的直接依赖项升级到其最新版本,但这不会将对lodash的依赖项更新到该版本,而且实际上不应该


真正应该发生的事情是在您的
节点\u模块
文件夹中,您将获得更新的lodash(您可以通过查看其package.json和其中的版本进行检查)。如果您进入
grunt angular translate
文件夹并查看其自身的
node\u模块
。。。它应该有自己的lodash文件夹,其中包含lodash
2.4.1

由于这个package-lock.json,我得到了lodash:2.4.1的原型污染漏洞。如果我使用
npm config set package lock false
停止生成package-lock.json,是否有可能不再获得此漏洞?谢谢。如果您一起避免包锁定,您将陷入其他问题。释放该依赖关系,或者在他们的回购协议上打开一个问题,并要求由于该漏洞对其进行更新。如果不再支持该repo,这是将其全部替换的另一个原因。有没有其他方法可以消除此漏洞?这个PR()正在做您想要做的事情,因此您可以询问(竖起大拇指等)该PR,或者直接将该repo分叉并自己更新这些包。在这一点上,lib似乎不再积极维护,因此您真的不必担心新更新的条款或遗漏:|等等。这并没有回答问题。假设我在项目的“3.8.3”中使用了“superagent”,我想将包锁更新为“5.1.0”。我是否必须手动调整它,或者npm是否有办法处理锁定文件上的目标更新?