能否不使用npm uninstall,手动删除package.json中的未使用依赖?
npm依赖卸载两种方式的差异及适用场景
两种操作都可以实现依赖移除的需求,但实际产生的效果完全不同,可根据你的使用场景选择:
- 直接修改
package.json删除对应依赖条目
该操作仅移除了项目对依赖的声明,不会产生其他联动修改:已经下载到node_modules目录下的依赖包不会被删除,package-lock.json锁文件中记录的依赖版本、依赖树信息也不会同步更新。后续执行npm install时,npm会优先读取锁文件的记录,把你删除的依赖条目重新写回package.json。
该方式仅适合你计划批量调整依赖版本、后续会手动清空node_modules和锁文件后重新执行全量安装的场景 - 执行
npm uninstall <依赖包名>命令
该操作会自动完成3项联动处理,不会产生遗留问题:- 自动删除
package.json中dependencies或者devDependencies下对应的依赖条目 - 移除
node_modules目录下对应的依赖包,同时自动清理没有被其他依赖引用的子依赖包,节省磁盘空间 - 同步更新
package-lock.json中的依赖树记录,后续执行npm install不会出现被删依赖自动恢复的问题
- 自动删除
补充说明:如果要卸载的是开发依赖,执行命令时需添加
-D参数,即npm uninstall -D <依赖包名>
操作建议
日常卸载单个依赖优先选择npm uninstall命令,操作更完整,不会出现依赖声明和实际安装内容不一致的问题;如果是项目整体重构依赖架构,需要批量替换多个依赖的版本,可以直接批量修改package.json内容后重新执行全量安装。
内容的提问来源于stack exchange,提问作者TombaHYu
相关产品推荐
相关产品推荐

