如何卸载本地包——如何卸载本地包原文章内容有点过时了,就说说最新的npmuninstall特性。老1.卸载命令npm[un|uninstall]pkg[-S|--save|-D|--save-dev]比如上例中npmuninstalllodash会从node_modules中删除lodash包,但是在对应的package.json文件中的依赖项不会删除此信息。比如此时package.json中对应的内容是:..."dependencies""{"lodash":"4.17.5",}...所以下一步就是同步package.json的信息和node_modules.具体方法是在使用npmuninstallpkg命令的时候加上下面的flags.如果是开发依赖就加上--save-dev,如果是产品应用依赖就加上--save.但是这样会造成一些不相关的、不完善的问题,比如有一个依赖包,你开发了这个包你实际没有用到,然后你又卸载了,同时你的项目是多人开发的。如果你用的是老版本,除非你手动同步,否则还是会保留在别人的node_modules包中,那么最后打包的时候可能大小不一样,这种不必要的冲突需要通过沟通来解决,所以,在npm后期的卸载机制中,会直接同步package.json,将相关包从package.json中移除。dependencies或Devdependencies中的json。2、新版npmuninstall机制无论在新版npmuninstallpkg命令中添加--save或--save-dev标志,都会从package.json中删除相应的依赖信息。方法同yarnremove。如果一定要保留,可以在执行卸载命令时加上--no-save标志。但是yarn没有这个flag,不管怎么删除都会同步package.json。这样做的主要目的是为了避免在团队开发过程中出现上述问题。3.手动修改package.json的依赖。手动从package.json中删除包后,有两种方式同步node_modules。npmprune的方法是对node_modules中那些package.json中不存在的包进行剪枝。npminstall这个命令是下载package.json中指定的依赖,相当于重新设置node_modules。它还将清除package.json中不存在的包。4.--no-save问题是因为现在的npm在package.json文件附近生成了一个package-lock.json文件,用于记录项目和依赖信息。当您将--no-save与npmprune结合使用时,您会得到意想不到的结果。这时候的解决办法是先执行npminstall,再执行npmprune。5.注意国内很多开发者用cnpm,很多团队用yarn。单独使用这些是可以的,但是它们不兼容,所以混合使用它们是项目开发的问题。因此,请尝试单独使用一种工具。如果有问题,最简单最笨的办法就是删除node_modules/,然后npm|cnpm|yarninstall重新下载。
