npm软件包列表中删除了哪些重复数据?

时间:2018-10-12 13:58:25

标签: node.js npm

我正在以npm list的身份运行命令,并且得到下面提到的列表作为依存关系,我想知道 deduped 的含义是什么,请让我知道它的含义。

Please check below mention image...!!!!

1 个答案:

答案 0 :(得分:54)

我认为这是一个有效的问题,不知道为什么被否决。尤其是因为文档没有明确说明“重复”属性(形容词)的含义,而只是说明命令npm dedupe的含义。

(当然,只要稍加努力,就可以知道它的含义。但是,我认为这是很公平的,特别是对于初学者。)

我认为,造成混淆的部分原因是,大多数人在调用npm dedupe时并没有显式调用npm list,但在依赖树中仍具有重复数据删除程序包。这是因为npm install隐式调用了重复数据删除(或执行类似的操作!?),文档中也未对此进行说明。

所以: 自然,“重复删除”是重复数据删除->删除重复项的缩写。 npm dedupe的文档(感谢@Molda)解释了npm是如何做到的: 它检查多个软件包是否具有相同的依赖关系(意味着相同的软件包版本(范围)),并将它们“指向”相同的软件包 -> 同一软件包不必安装两次!刚刚被引用了。

此外,它还将包“移动到树上”(展平树)。这是完全有意义的,因为否则一个程序包将不得不查看其他程序包的node_modules(这会很杂乱),并有助于简化依赖性。

您可以验证这一点,因为在依赖图中的每个包含 deduped 的程序包,至少可以在图中找到至少一次,通常是在“较高级别”。

您在屏幕上发布的content-type@1.0.4是body-parser的依赖项。再往下一点,它也被列为直接表达更高一级的直接依赖。