node.js学习之npm 入门 —6.《怎么卸载本地packages》

 阅读约 4 分钟

怎么卸载本地packages —— How to Uninstall Local Packages

原文
本章的内容有些过时,本人就说一下最新的npm卸载的特性。

旧的

1. 卸载

命令

npm [un|uninstall] pkg [-S|--save|-D|--save-dev] 

例如

npm uninstall lodash

在上面的例子中会从node_modules中删除lodash这个package,但是在package.json文件中相应的依赖不会删除该信息。
例如此时的package.json里面的相应内容是:

...
"dependencies""{
  "lodash":"4.17.5",
  }
...

所以需要下一步同步package.json跟node_modules的信息。
具体做法是使用npm uninstall pkg命令时加上后面的flags。如果开发依赖则加上--save-dev,如果是产品应用依赖则加上--save

但是这个会导致一些无关痛痒不完美的问题。比如说有个dependencies的package,你开发完后实际上没有使用到这个package,然后你给卸载了。
同时你们这个项目是多人开发的,旧版的话除非你手动去同步,不然别人的node_modules中仍然保留该package。
那么在最终打包项目时可能造成体积不一样,而且这种不必要的冲突也得需要进行沟通才能解决。

因此在npm后来的卸载机制中会直接同步package.json,把相关package从package.json中的dependencies或者Devdependencies中删除。

2. 新版npm卸载机制

在新版的npm uninstall pkg命令中无论加不加--save或者--save-dev flags都会从package.json中删除相应的依赖信息。

该方法跟yarn remove是一样的。

如果非要保留的话可以在执行卸载命令时加上--no-save flag。

然而yarn是没有该flag,是无论怎样删除都会同步package.json。

这样做的目的主要是在团队合作开发时避免上述的一点问题。

3.手动修改package.json的依赖。

当手动把package从package.json中删除后,同步node_modules的方式有两个。

npm prune

该方法是修剪node_modules中的那些在package.json中不存在的package。

npm install

该命令是下载package.json中指定的依赖,相当于重置node_modules。也会把package.json中不存在的package给清除掉。

4.--no-save问题

因为现在的npm在package.json的文件附近伴生一个package-lock.json文件用来记录项目和依赖的信息。
当你结合--no-save和npm prune使用时会收到不是预想的结果。

这时的解决方法是,先执行npm install然后在执行npm prune

5. 注意点

由于很多国内的开发者使用cnpm也有很多团队使用yarn
单独使用这些是没问题的,但是它们是不兼容的,所以混合使用是项目的开发出现问题。
所以尽量单独使用一种工具。
如果出现问题了,最简单最笨的方法是,删除node_modules/,然后npm|cnpm|yarn install来重新下载。

阅读 552发布于 2018-03-15
推荐阅读

近几年来前端的变化记录

36 人关注
34 篇文章
专栏主页
目录