npm vs yarn & npm发展史

2019-01-14  本文已影响0人  一只重拾梦想的小水

工具:

depcheck:检查unused package

综述:

npm前期版本问题很多,但没有替代工具

yarn的出现解决了很多问题,变的火热

npm5基本追平yarn

使用建议:npm* -> yarn -> npm5

一、npm早期版本:

由于每个包的依赖都重新安装、放在对应的node_modules下,导致:

目录嵌套层级过深  (触发 windows 文件系统中,文件路径不能超过 260 个字符长的错误)

模块实例无法共享

安装速度过慢: 同步请求

二、npm软链版本:

扁平化安装到同一层,通过软链接方式,从各个包的node_modules指向到根node_modules

好处:

目录简介:解决了1、2问题

安装速度提升:多线程请求

缺点:

npminstall和pnpm包实现,不能保证与npm行为完全一致,有bug要反馈给作者,修复时间难以预计

无法与npm一起用:混用效果奇葩

三、npm3

无冲突的情况下尽量安装到较高的层级,各依赖通过模块引入;但是引入的包版本不同时,将不能放到同一目录

好处:目录层级真正扁平化

缺点:

依赖同一个包的不同版本时,还是要嵌套

安装速度依然不够快

四、yarn

好处:(对比npm)

锁定版本,解决了两次安装版本无法保证一致的问题 (yarn.lock)

解决了安装速度慢的问题 (并行)

离线模式(缓存)

其他好处:

默认安装到dependencies,不需要npm install -s

命令简介、语义化、提示的交互性高 install->add;uninstall->remove;update交互模式选择更新的包

全局模块的管理

npm各个项目下的包安装到一处/usr/lib/node_modules,通过软链接到/usr/local/bin

yarn:所有包安装到一处,很方便的直接备份yarn.lock 到另一处安装还原

缺点

非官方,兼容性较差、更新较慢

五、npm5(2017)

默认package-lock.json 锁定版本

默认安装到dependencies

安装速度提升,较yarn慢一点,可以接收

npm-check替代yarn update

package-lock.json的功能,早在npm5发布之前就存在,npm shrinkwrap,但需要手动生成,所以受众不多

tip:5.0版本存在一个坑:如果已经有package-lock,在package中新增依赖,该包并不会被安装到node_modules,package-lock也不会更新

参考:https://segmentfault.com/a/1190000014716713

命令行对比:https://yarnpkg.com/lang/en/docs/migrating-from-npm/

上一篇下一篇

猜你喜欢

热点阅读