微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何仅将 lodash 包从 lodash@4.17.19 更新到 v4.17.21

如何解决如何仅将 lodash 包从 lodash@4.17.19 更新到 v4.17.21

最近 lodash 包在 github 页面上报告了一个安全漏洞问题。您可以在此处找到详细信息。 https://github.com/lodash/lodash/issues/5083

This latest version of lodash has security vulnerability of Command Injection (CVE-2021-23337).
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23337
https://snyk.io/vuln/SNYK-JS-LODASH-1040724

All versions of package lodash; all versions of package org.fujion.webjars:lodash are vulnerable to Command Injection via template.

他们已经解决了这个问题,它的修复存在于 lodash v4.17.21 中。 我正在使用 Angular 10 版本。我没有直接使用 lodash,而是 @angular/localize@10.0.7 内部使用的角度包之一使用 @babel/core@7.8.3,而这个 babel 内部使用 lodash@4.17.19

Angular 人们会在他们的最新版本中更新版本号,目前,我不想升级到最新版本的 angular。因此,我的问题是如何只更新 lodash 包,从 lodash@4.17.19 到 v4.17.21 的子依赖(babel/core 所需的依赖包)?

解决方法

npm update lodash 帮我解决了问题。

$ npm -v
7.6.0
$ npm ls lodash  
temp@1.0.0 /Users/trott/temp
└─┬ @angular/localize@10.2.4
  └─┬ @babel/core@7.8.3
    ├─┬ @babel/traverse@7.13.0
    │ └── lodash@4.17.19 deduped
    ├─┬ @babel/types@7.13.0
    │ └── lodash@4.17.19 deduped
    └── lodash@4.17.19

$ npm update lodash

changed 1 package,and audited 99 packages in 1s

6 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
$ npm ls lodash
temp@1.0.0 /Users/trott/temp
└─┬ @angular/localize@10.2.4
  └─┬ @babel/core@7.8.3
    ├─┬ @babel/traverse@7.13.0
    │ └── lodash@4.17.21 deduped
    ├─┬ @babel/types@7.13.0
    │ └── lodash@4.17.21 deduped
    └── lodash@4.17.21

$

这不是完全您所要求的,因为它更新到满足依赖项要求的最新 lodash,而不是特定版本 4.17.21。碰巧的是(在撰写本文时),@angular/localize 的最新版本是 4.17.21。如果您确实需要一个特定版本而不是满足您的依赖项的最新版本,请继续阅读。

假设您想更新到 4.17.20。你可以试试npm update lodash@4.17.20。唉,这行不通。该命令运行良好,但不更新任何内容。在这种情况下,您必须先 npm install lodash@4.17.20。这也将更新您的所有依赖项(假设 4.17.20 满足他们的要求)。然后 npm uninstall lodash@4.17.20 将其从您的直接依赖项中删除。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。