npm8中文文档
搜索本地包树并尝试通过将依赖关系移到树上更远的位置来简化整体结构,这样它们可以更有效地被多个依赖包共享。
例如,考虑这个依赖图:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
在这种情况下,npm dedupe
会将树转换为:
a
+-- b
+-- d
`-- c@1.0.10
由于 node 模块查找的分层特性,b 和 d 都将通过树根级别的单个 c 包来满足它们的依赖关系。
在某些情况下,您可能有这样的依赖关系图:
a
+-- b <-- depends on c@1.0.x
+-- c@1.0.3
`-- d <-- depends on c@1.x
`-- c@1.9.9
在安装过程中,b
的 c@1.0.3
依赖项被放置在树的根目录中。尽管 c@1.0.3
可以满足 d
对 c@1.x
的依赖,但还是使用了较新的 c@1.9.0
依赖,因为 npm 默认支持更新,即使这样做会导致重复。
运行 npm dedupe
会导致 npm 记下重复并重新评估,删除嵌套的 c
模块,因为根目录下的那个就足够了。
要在安装过程中更喜欢重复数据删除而不是新奇,请运行 npm install --prefer-dedupe
或 npm config set prefer-dedupe true
。
参数被忽略。重复数据删除始终作用于整个树。
请注意,此操作会转换依赖关系树,但不会导致安装新模块。
使用 npm find-dupes
将在 --dry-run
模式下运行命令。
注意:npm dedupe
永远不会更新项目 package.json
中直接依赖项的 semver 值,如果要更新 package.json
中的值,可以运行:npm update --save
代替。