导语:Npm和yarn都是一个包管理工具
npm使用一个名为package.json文件,用户通过npm install下载的依赖包都会保存在这个文件里面。
Yarn是Facebook、Google、Exponent和Tilde联合推出的一个新的JS包管理工具,目的是为了弥补npm存在的一些缺陷。
Npm存在的缺陷:
npm install的时候很慢,在拉取新项目的时候通常都要等很久,删除掉node_module后重新install速度也依旧很慢。
不同人在npm install同一个项目的时候,会出现版本不一致的问题,这是由于package.json版本号的问题,下面有三个版本号在安装时代表不同的含义。
“5.0.3” 表示安装指定的5.0.3版本
“~5.0.3”表示安装5.0.X中最新的版本
“^5.0.3”表示安装5.X.X中最新的版本
这就导致同一个项目,你的同事安装下来是没有问题的,但你有可能会因为安装版本的不一致出现bug。
用npm在安装过程中,如果一个包出现了问题抛出了错误,但是npm会继续下载和安装包,因为npm会把所有的日志输出到终端,错误包的错误信息会在一大堆npm打印的警告中丢失,你甚至永远都不会注意到实际发生的错误。
Npm安装包是按照队列执行的,也就是说一个包的安装要等待上一个包安装完成才能执行
Yarn的优点:
Yarn安装包的速度很快,因为yarn是同步执行所有任务的,所有包的安装可以一起同时执行,不用等待,提高了性能。
Yarn有缓存机制,如果之前安装过这个包了,再次安装时yarn会从缓存中获取,不用再从网络上下载,有离线模式。这也是yarn速度快的一个原因。
安装版本会统一,yarn有一个锁定文件(lock file)记录了被确切安装上的模块版本,每次只要新增了一个模块,yarn就会自动创建或更新yarn lock这个文件,这样就保证,每次拉取同一个项目依赖时,都是同样的版本模块。
Yarn的输出更简洁,npm会不断打印被安装上的依赖,而yarn只会打印出必要的信息
尽管一个依赖包被多个库关联引用很多次,安装这个依赖包时,yarn只会从一个注册来源去安装。
Yarn和npm命令对比
npm | yarn |
npm install | yarn |
npm install react --save | yarn add react |
npm uninstall react --save | yarn remove react |
npm install react --save-dev | yarn add react --dev |
npm update --save | yarn upgrade |