您可以使用 npm-prune 删除无关的包。
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
此命令删除“无关”包。如果提供了包名称,则仅删除与提供的名称之一匹配的包。
外部包是未列在父包的依赖项列表中的包。
如果指定了 --production 标志或 NODE_ENV 环境变量设置为 production,此命令将删除指定的包你的 devDependencies。设置 --no-production 将否定 NODE_ENV 被设置为 production。
如果使用 --dry-run 标志,则实际上不会进行任何更改。
如果使用了 --json 标志,那么 npm prune 所做的更改(或使用 --dry-run 所做的更改)打印为 JSON 对象。
在启用包锁的正常操作中,安装模块时会自动修剪无关的模块,您只需要带有 --production 标志的此命令。
如果您禁用了包锁,则不会删除无关的模块,您可以不时运行 npm prune 来删除它们。
使用 npm-dedupe 减少重复
npm dedupe
npm ddp
搜索本地包树并尝试通过将依赖关系进一步向上移动来简化整体结构,从而可以更有效地由多个依赖包共享。
例如,考虑这个依赖图:
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
由于节点模块查找的分层特性,b 和 d 都将通过树根级别的单个 c 包来满足它们的依赖关系。
重复数据删除算法遍历树,将每个依赖项在树中尽可能向上移动,即使没有找到重复项。这将产生扁平和去重的树。