如何更新 package-lock.json 中的依赖项

Bru*_*zza 7 security dependencies github package-lock.json

我第一次收到来自 GitHub 的关于我的一些项目依赖项的潜在安全问题(标签:high-severity)的通知。这是示例消息:

在 package-lock.json 中发现的 url-parse 漏洞

这是建议的解决方案:

将 url-parse 升级到 1.4.3 或更高版本。例如:

"dependencies": {
  "url-parse": ">=1.4.3"
}
Run Code Online (Sandbox Code Playgroud)

或者…

"devDependencies": {
  "url-parse": ">=1.4.3"
}
Run Code Online (Sandbox Code Playgroud)

现在,我所做的只是npm outdated -g --depth=0根据官方文档在我的终端中运行并执行npm -g update命令来简单地检查任何过时的包(我也尝试使用 来定位依赖项本身npm update url-parse)。一些软件包已成功更新,但似乎没有找到导致问题的软件包。我是否应该通过添加建议的代码行来手动更新它:"url-parse": ">=1.4.3"

最后,我应该在多大程度上关注此类警报?

谢谢!

jcu*_*bic 13

您不需要手动编辑锁定文件,只需运行:

npm install --package-lock-only url-parse
Run Code Online (Sandbox Code Playgroud)

它应该安装最新版本的软件包并仅更新锁定文件

由于未知原因,它还会更新 package.json 所以你需要:

git checkout package.json
Run Code Online (Sandbox Code Playgroud)

  • 根据[this](/sf/ask/3891954951/),该命令仅修改 `package-lock.json` 而不安装。除此之外,它的行为与“npm i”相同。因此,它修改 package.json 的事实是完全可以预料的,并且它并没有真正安装任何东西。也不知道为什么你提到“git checkout”。 (2认同)

slo*_*ady 11

更新它的最简单方法可能是按照您的建议进入package-lock.json文件并将旧文件修改"version": "#.#.#"为JSON 对象"version": ">=1.4.3"下的文件url-parse。我建议COMMAND+F使用依赖项名称(CONTROL+F对于 Windows 用户),因为该package-lock.json文件很容易达到数千行长,一旦找到依赖项,请将版本号更改为 GitHub 认为不会受到漏洞影响的版本号。

我刚刚创建了一个新的存储库,并且收到了一条非常相似的ws依赖项消息,在手动更新文件中的版本后,package-lock.json我在刷新 GitHub 警报页面后收到了此消息:

No open alerts on ws were found in package-lock.json.
Alerts may have been resolved and deleted by recent pushes to this repository.
Run Code Online (Sandbox Code Playgroud)

作为参考,这是我更新依赖项之前的样子ws

"ws": {
      "version": "1.1.5",
      "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
      "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
      "dev": true,
      "requires": {
        "options": ">=0.0.5",
        "ultron": "1.0.x"
      }
Run Code Online (Sandbox Code Playgroud)

之后:

"ws": {
      "version": ">=3.3.1",
      "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
      "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
      "dev": true,
      "requires": {
        "options": ">=0.0.5",
        "ultron": "1.0.x"
      }
Run Code Online (Sandbox Code Playgroud)

您现在可能已经弄清楚了这一点,因为我看到您大约一年前发布了这个问题,但将其留在这里是为了帮助将来遇到类似问题的任何人。

  • “将其留在这里是为了帮助将来遇到类似问题的任何人。” 就是那种精神! (8认同)
  • 抱歉,如果这是一个愚蠢的问题,但是下次有人运行“npm install”时,这不会被覆盖吗? (4认同)