首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用npm更新依赖项的依赖项

如何使用npm更新依赖项的依赖项
EN

Stack Overflow用户
提问于 2020-03-17 09:23:44
回答 4查看 34.4K关注 0票数 42

我很奇怪为什么我找不到这个简单问题的答案。而且,我很奇怪npm update没有解决这个问题。

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

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

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

我是不是遗漏了什么?

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

npm ls minimist的输出

代码语言:javascript
复制
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 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-03-17 16:01:02

问题在于深度。从文件中:

从npm@2.6.1开始,npm更新将只检查顶级包。以前版本的npm也会递归地检查所有依赖项。若要获取旧行为,请使用npm -深度9999更新。

所以我们必须提供我们想要更新的深度。在我的例子中,9999深度太长了,我取消了它。但是--depth 5就足够了。

代码语言:javascript
复制
npm update --depth 5

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

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

示例:

改变这一点:

代码语言:javascript
复制
      "dependencies": {
        "minimist": {
          "version": "1.2.0",
          "bundled": true,
          "dev": true,
          "optional": true
        }
      }

对此:

代码语言:javascript
复制
      "dependencies": {
      }

然后再次运行npm install

票数 31
EN

Stack Overflow用户

发布于 2021-11-13 00:30:32

对于npm v7.0.0,运行npm update将始终更新所有包,而不仅仅是根package.json文件中指定的包。从移除命令中选择NPM --depth选项,并改变其行为。

注意:某些底层包仍有可能将过时的版本指定为依赖项,这将阻止npm update安装最新版本。你没有太多的选择,除了强迫一个更新的版本的决议。

票数 15
EN

Stack Overflow用户

发布于 2020-03-17 15:35:00

对于"mkdirp“的依赖关系,我还需要手动将极简版本从"0.0.8”更改为"^1.2.5“。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60719446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档