有没有一种方法可以简单地从Node.js项目中卸载所有未使用的(未声明的)依赖项(在我中不再定义的依赖项)package.json
。当我更新应用程序时,我希望自动删除未引用的包。
有没有一种方法可以简单地从Node.js项目中卸载所有未使用的(未声明的)依赖项(在我中不再定义的依赖项)package.json
。当我更新应用程序时,我希望自动删除未引用的包。
Answers:
注意:npm
启用程序包锁定后,最新版本会自动执行此操作,因此,除了使用带有--production
标志的开发程序包删除以外,这不是必需的。
运行npm prune
以删除未列出的模块package.json
。
来自npm help prune
:
此命令删除“外部”软件包。如果提供了软件包名称,则仅删除与提供的名称之一匹配的软件包。
无关软件包是未在父软件包的依赖项列表中列出的软件包。
如果
--production
指定了标志,则此命令将删除在devDependencies中指定的软件包。
package.json
。那正确吗?因此,下一次更新或安装将不得不重新安装它们。
node_modules
目录中,因此它们与模块一起删除。
package.json
手上删除业力,但留下凉亭。当我运行时npm prune
,我希望所有业力,包括它自己的node_modules
包含依赖项的文件夹,都将被删除。那么Bower的依赖项(bower-json,bower-logger,chmodr,fstream,glob等)如何呢?从技术上讲,这些不在我的项目的中列出package.json
。那些被去除了吗?
node_modules
,而是在内部 node_modules/bower/node_modules
受的“保护” node_modules/bower/package.json
。包的依赖关系和包的依赖关系没有混合在一起。
如果你不担心一两分钟的时间这样做,一个解决办法是rm -rf node_modules
和npm install
再次来重建本地模块。
node_modules
还会验证package.json
文件是否描述了可重现的依赖关系图。删除并重新安装您node_modules
的计算机基本上是一个部署测试。
npm prune
没有帮助一个IOTA,但这确实。我的问题是符号链接断开。
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
此命令删除“外部”软件包。如果提供了软件包名称,则仅删除与提供的名称之一匹配的软件包。
无关软件包是未在父软件包的依赖项列表中列出的软件包。
如果指定了--production标志或将NODE_ENV环境变量设置为production,则此命令将删除devDependencies中指定的软件包。设置--no-production将否定NODE_ENV设置为生产。
如果--dry-run标志,那么实际上将不会进行任何更改。
如果使用--json标志,则对npm prune进行更改(或使用--dry-run进行更改))都将打印为JSON对象。
在启用包锁的正常操作中,安装模块时会自动修剪无关模块,并且只需要在--production中使用此命令标志的。
如果您禁用了包锁,那么多余的模块将不会被删除,由您不时运行npm prune来删除它们。
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包满足它们的依赖关系。
重复数据消除算法会遍历树,即使未找到重复项,也将每个依赖关系尽可能地移到树中。这将导致平面树和重复数据消除树。
node_modules
要从各自的文件夹中删除文件夹package.json
吗?