javascript - 如何使用 npm 更新依赖项的依赖项

标签 javascript npm

我很奇怪我找不到这个简单问题的答案。另外我很奇怪 npm update 不能解决这个问题。

我无法在这里发布完整的依赖关系树,但无论如何让我描述一下我的问题:

minimist 已过时(版本 1.2.0),并且该版本存在安全漏洞。这些包需要 minimist 将依赖项定义为 ^1.2.0 - 因此它与 1.2.2 兼容。

常见的解决方案是将其放入 devDependencies 中的 package.json 或带有 ^1.2.2dependencies 中>。我不想将其放入 package.json 中。我觉得 npm update 也应该更新间接依赖项。

我错过了什么吗?

在这里你可以看到我的package-lock.json:https://github.com/tflori/riki-community/blob/master/package-lock.json

以及npm ls minimist的输出:

riki-community@ /home/iras/work/projects/riki/community
├─┬ awesome-typescript-loader@5.2.1
│ ├─┬ loader-utils@1.2.3
│ │ └─┬ json5@1.0.1
│ │   └── minimist@1.2.0  deduped
│ └─┬ mkdirp@0.5.1
│   └── minimist@0.0.8 
├─┬ jest@25.1.0
│ └─┬ @jest/core@25.1.0
│   ├─┬ @jest/transform@25.1.0
│   │ └─┬ @babel/core@7.8.7
│   │   └─┬ json5@2.1.2
│   │     └── minimist@1.2.5 
│   └─┬ jest-haste-map@25.1.0
│     └─┬ sane@4.1.0
│       ├─┬ @cnakazawa/watch@1.0.4
│       │ └── minimist@1.2.0  deduped
│       └── minimist@1.2.0  deduped
├─┬ node-sass@4.13.1
│ └─┬ meow@3.7.0
│   └── minimist@1.2.0 
├─┬ ts-jest@25.2.1
│ └─┬ json5@2.1.2
│   └── minimist@1.2.5 
├─┬ tsconfig-paths-webpack-plugin@3.2.0
│ └─┬ tsconfig-paths@3.8.0
│   └── minimist@1.2.0  deduped
└─┬ webpack@4.42.0
  └─┬ watchpack@1.6.0
    └─┬ chokidar@2.1.8
      └─┬ UNMET OPTIONAL DEPENDENCY fsevents@1.2.9
        └─┬ UNMET OPTIONAL DEPENDENCY node-pre-gyp@0.12.0
          ├─┬ UNMET OPTIONAL DEPENDENCY mkdirp@0.5.1
          │ └── UNMET OPTIONAL DEPENDENCY minimist@0.0.8 
          └─┬ UNMET OPTIONAL DEPENDENCY rc@1.2.8
            └── UNMET OPTIONAL DEPENDENCY minimist@1.2.0 

最佳答案

最好的选择是将 npm 更新到版本 >= 7.0。更多详情请参阅 xeos 的回答。如果这不可能,有两种解决方案:

<小时/>

问题在于深度。来自文档:

As of npm@2.6.1, the npm update will only inspect top-level packages. Prior versions of npm would also recursively inspect all dependencies. To get the old behavior, use npm --depth 9999 update.

所以我们必须提供我们想要更新的深度。就我而言,9999 深度花了太长时间,我取消了它。但--深度 5 就足够了。

npm update --depth 5
<小时/>

如果仍然没有更新依赖项,那么您必须手动更改 package-lock.json

打开package-lock.json并找到所有出现的"minimist": {并删除该对象。

示例:

更改此:

      "dependencies": {
        "minimist": {
          "version": "1.2.0",
          "bundled": true,
          "dev": true,
          "optional": true
        }
      }

对此:

      "dependencies": {
      }

然后再次运行npm install

关于javascript - 如何使用 npm 更新依赖项的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60719446/

相关文章:

javascript - jQuery 垂直 slider 保持滑动

javascript - 函数中的 Ajax 调用序列

javascript - WPML |用JS获取当前的ICL_LANGUAGE_CODE

node.js - 在 docker 容器内安装 npm 时依赖项损坏

javascript - NodeJS - nodemon 没有重新启动我的服务器

node.js - npm 命令卸载或修剪 Node.js 中未使用的包

javascript - 在 jQuery 中将函数作为背景图像 url 参数传递

javascript - HTML5 显示具有特定内容的 localStorage 元素

json - 如何批量插入600MB大json文件到elasticsearch?

node.js - 我想在 'npm install' 下载一些资源,大概使用 'prepublish' 脚本