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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了npm命令用于卸载或修剪Node.js中未使用的包相关的知识,希望对你有一定的参考价值。

有没有办法简单地从Node.js项目中卸载所有未使用的(未声明的)依赖项(不再在我的package.json中定义。)当我更新我的应用程序时,我希望自动删除未引用的包。

答案

运行npm prune以取消未在package.json中列出的模块。

来自npm help prune

此命令删除“无关”包。如果提供了包名称,则仅删除与提供的名称之一匹配的包。

无关的包是父包的依赖项列表中未列出的包。

如果指定了--production标志,则此命令将删除devDependencies中指定的软件包。

另一答案

如果你不担心几分钟的时间这样做,那么rm -rf node_modulesnpm install的解决方案将再次重建本地模块。

另一答案

您可以使用npm-prune删除无关的包。

npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]

此命令删除“无关”包。如果提供了包名称,则仅删除与提供的名称之一匹配的包。

无关的包是父包的依赖项列表中未列出的包。

如果指定了--production标志或将NODE_ENV环境变量设置为production,则此命令将删除devDependencies中指定的包。设置--no-production将否定NODE_ENV被设置为生产。

如果使用--dry-run标志,则实际上不会进行任何更改。

如果使用了--json标志,那么修改后的npm修剪(或者将使用--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包来满足它们的依赖性。

重复数据删除算法遍历树,尽可能地将每个依赖项移动到树中尽可能远,即使找不到重复项。这将导致平面和重复数据删除树。

以上是关于npm命令用于卸载或修剪Node.js中未使用的包的主要内容,如果未能解决你的问题,请参考以下文章

什么是npm以及npm基本命令

什么是npm以及npm基本命令

如何在 Node.js 中卸载 npm 模块?

node.js ----NPM使用介绍

04 npm 命令大全

npm的使用与npm的团队建设