【问题标题】:How to update a dependency in package-lock.json如何更新 package-lock.json 中的依赖项
【发布时间】:2019-04-06 12:54:49
【问题描述】:

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

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

这是建议的解决方案:

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

"dependencies": {
  "url-parse": ">=1.4.3"
}

或者……

"devDependencies": {
  "url-parse": ">=1.4.3"
}

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

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

谢谢!

【问题讨论】:

    标签: security github dependencies package-lock.json


    【解决方案1】:

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

    npm install --package-lock-only url-parse
    

    它应该安装最新版本的包并且只更新锁文件

    由于未知原因,它还会更新 package.json,因此您需要:

    git checkout package.json
    

    【讨论】:

    • 根据this该命令只修改package-lock.json而不安装。除此之外,它的行为与npm i 相同。所以它修改 package.json 的事实是完全可以预料的,它并没有真正安装任何东西。也不知道你为什么提到git checkout
    【解决方案2】:

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

    我刚刚创建了一个新的 repo,我收到了一条与 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.
    

    作为参考,这是我在更新 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"
          }
    

    之后:

    "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"
          }
    

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

    【讨论】:

    • “把这个留在这里是为了帮助以后遇到类似问题的人。”这就是精神!
    猜你喜欢
    • 2018-04-19
    • 2018-12-07
    • 2019-03-26
    • 2019-10-02
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2020-01-16
    • 2020-03-24
    相关资源
    最近更新 更多