Yamn是由Facebook、Google、Exponent和 Tilde 联合推出了一个新的 JS 包管理工具,正如官方文档中写的,Yam 是为了弥补 npm 的一些缺陷而出现的,它解决了npm存在的一些问题


速度快

yarn的速度主要来自两个方面

1,并行安装:npm和yarn在进行包安装的时候都会进行一系列任务,npm会按照 队列安装(一个安装完才会安装下一个),而yarn是同步执行所有任务

2,离线模式:如果之前安装过一个软件包的话,下一次安装就会从缓存中获取,不用像npm一样从网络上获取

安装版本的统一

yarn在完成软件包的安装以后会生成一个.lock文件,记录安装的版本号,每次新增模块,yarn都会更新.lock文件,保证下载依赖的时候版本的一致。npm也可以锁定版本的依赖,但是需要开发人员执行npm shrinkwrap命令,这个 命令会生成一个锁定文件,在执行npm install的时候会优先读取其中的版本号。yarn优于npm的是锁定文件会默认生成,而npm需要开发者去输入命令

更简洁的输出

npm 的输出信息比较冗长。在执行 npminstal 的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,yarn对比npm来说就简洁太多了,默认情况下,结合了 emoji直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。

多注册来源处理

所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。

更好的语义化

yarn改变了一些npm命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 instal/uninstall 要
更清晰。

yarn的出现弥补了npm的一些不足,当然,选择使用哪个包管理工具还是要看自己的开发习惯和熟悉程度