Open
Description
Yarn是什么
Yarn
是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,Yarn
是为了弥补npm
的一些缺陷而出现的。”这句话让我想起了使用npm时的坑了:
npm install
的时候相比yarn
会慢好多。- 同一个项目,安装的时候无法保持一致性。由于
package.json
文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。
"5.0.3",
"~5.0.3",
"^5.0.3"
“5.0.3”
表示安装指定的5.0.3
版本,“~5.0.3”
表示安装5.0.X
中最新的版本,“^5.0.3”
表示安装5.X.X中
最新的版本。这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。
- 安装的时候,一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误。
Yarn的优点
速度快
- 并行安装:无论
npm
还是Yarn
在执行包的安装时,都会执行一系列任务。npm
是按照队列执行每个package
,也就是说必须要等到
当前package
安装完成之后,才能继续后面的安装。而Yarn
是同步执行所有任务,提高了性能。 - 离线模式:如果之前已经安装过一个软件包,用
Yarn
再次安装时之间从缓存中获取,就不用像npm
那样再从网络下载了。
安装版本统一
为了防止拉取到不同的版本,Yarn
有一个锁定文件 (lock file) 记录了被确切安装上的模块的版本号。每次只要新增了一个模块,Yarn
就会创建(或更新)yarn.lock
这个文件。这么做就保证了,每一次拉取同一个项目依赖时,使用的都是一样的模块版本。
npm5.0
默认新增了类似yarn.lock
的package-lock.json
。
更简洁的输出
npm
的输出信息比较冗长。在执行npm install
的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,Yarn
简洁太多:默认情况下,结合了 emoji直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。
参考文献
Metadata
Metadata
Assignees
Labels
No labels