美文网首页
npm vs yarn & npm发展史

npm vs yarn & npm发展史

作者: 一只重拾梦想的小水 | 来源:发表于2019-01-14 14:05 被阅读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/

    相关文章

      网友评论

          本文标题:npm vs yarn & npm发展史

          本文链接:https://www.haomeiwen.com/subject/dmqzrqtx.html