是否有一种方法可以简单地卸载Node.js项目中所有未使用(未声明)的依赖项(在我的package.json中不再定义的依赖项)。当我更新我的应用程序时,我喜欢自动删除未引用的包。
注意:如果启用了包锁,最近的npm版本在运行npm install时自动执行此操作,所以这是不必要的,除非删除带有——production标志的开发包。
运行npm prune删除package.json中没有列出的模块。
从npm帮助修剪:
该命令删除“无关的”包。如果提供了包名,则只删除与所提供名称之一匹配的包。 无关包是不在父包的依赖项列表中列出的包。 如果指定了——production标志,该命令将删除在devDependencies中指定的包。
您可以使用npm-prune删除无关的包。
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 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包满足它们的依赖关系。
重复数据删除算法遍历树,在树中尽可能向上移动每个依赖项,即使没有发现重复项。这将导致一个扁平的和重复数据删除的树。
你可以运行npx depcheck来获取项目中未使用的依赖项和devDependencies的列表。
然后你可以运行npm uninstall pkg1 pkg2等等来删除依赖。
或者也可以从包中删除依赖项。删除node_modules和package-lock.json后重新安装
推荐文章
- Browserslist: canius -lite已经过时。请运行下一个命令' npm update caniuse-lite browserslist '
- 检查已安装的angular-cli版本?
- 如何将Blob转换为JavaScript文件
- 如何用Express/Node以编程方式发送404响应?
- 如何安装包从github回购在纱线
- 什么时候.then(success, fail)被认为是承诺的反模式?
- 自动HTTPS连接/重定向使用node.js/express
- 在nodejs http中body在哪里。得到回应?
- 如何在猫鼬排序?
- Nodemon错误:“已达到文件监视器数量的系统限制”
- 如何使webpack开发服务器运行在端口80和0.0.0.0使其公开访问?
- 如何在node.js模块中访问和测试内部(非导出)函数?
- 如何将base64编码的映像保存到磁盘?
- 在用nodejs和express创建的REST API中设置响应状态和JSON内容的正确方法
- 如何获得请求路径与表达请求对象