openks / learn-vue

自定义组件文档
https://openks.github.io/learn-vue
0 stars 0 forks source link

为什么要使用yarn而非npm #18

Open openks opened 7 years ago

openks commented 7 years ago

因为这是我们在项目中实实在在碰到的问题,有的机器在构建时报node-sass的未正确安装的错,需要重新安装,既然package.json里面已经存在了为什么还要重新安装? 更换为yarn后就没有这种问题了 原因在这里

NPM允许指定范围内的包版本安装,那么就会造成补丁或者版本修复就会自动应用到项目中的副作用,这可能就会造成同一个“package.json”(NPM配置文件)在不同的机器内根据相同的dependencies却安装了不同版本的库。

如果一个包有多个版本,而且要求版本已经安装了,NPM就会使用已经安装的版本,而并非指定的版本,这样就会造成NPM偶然跳过安装升级版本。这种版本号的不匹配,无论多小,都是NPM一部分不可接受的错误。

对比NPM,Yarn是根据Commit版本号层级来安装依赖,而NPM仅仅依据的是package.json中的说明。对于怎么安装不同版本的依赖,或者安装最少的不同版本上,Yarn显得更加智能,升级后的依赖版本通常是可以被升级的。

你正在使用NPM安装包。包会在同一时间下载和安装,中途某个时候,一个包抛出了一个错误,但是NPM会继续下载和安装包。因为NPM会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆NPM打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误。 为了避免这个问题,当下载和安装过程完成后,Yarn把错误消息放在了前面。

更多信息在这里 中文译文 英文原版