概述

  1. yarn 官网:https://www.yarnpkg.com/zh-Hans/;

  2. yarn 是由 Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具,它仍然使用 npm 的registry,不过提供了全新 CLI 来对包进行管理;

npm 的问题

过去 yarn 的出现极大的抢夺了 npm 的市场,甚至有人戏言 npm 只剩下一个 registry 了;

之所以会出现这种情况,是因为在过去,npm 存在很多的问题:

  1. 依赖目录嵌套层次深:过去 npm 的依赖是嵌套的,这在 windows 系统上是一个极大的问题,由于众所周知的原因,windows 系统无法支持太深的目录;

  2. 下载速度慢

    • 由于嵌套层次的问题,所以 npm 对包的下载只能是串行的,即前一个包下载完后才会下载下一个包,导致带宽资源没有完全利用;
    • 多个相同版本的包被重复的下载;
  3. 控制台输出繁杂:过去 npm 安装包的时候,每安装一个依赖,就会输出依赖的详细信息,导致一次安装有大量的信息输出到控制台,遇到错误极难查看;

  4. 工程移植问题:由于 npm 的版本依赖可以是模糊的,可能会导致工程移植后,依赖的确切版本不一致;

yarn 优势

  1. 针对上述问题,yarn 从诞生那天就已经解决,它用到了以下的手段:

    • 使用扁平的目录结构;
    • 并行下载;
    • 使用本地缓存;
    • 控制台仅输出关键信息;
    • 使用 yanr-lock 文件记录确切依赖;
  2. 不仅如此 yarn 还优化了以下内容:

    • 增加了某些功能强大的命令;
    • 让既有的命令更加语义化;
    • 本地安装的 CLI 工具可以使用 yarn 直接启动;
    • 将全局安装的目录当作一个普通的工程,生成 package.json 文件,便于全局安装移植;
  3. yarn 的出现给 npm 带来了巨大的压力,很快 npm 学习了 yarn 先进的理念,不断的对自身进行优化,到了目前的 npm6 版本,几乎完全解决了上面的问题:

    • 目录扁平化;
    • 并行下载;
    • 本地缓存;
    • 使用 package-lock 记录确切依赖;
    • 增加了大量的命令别名;
    • 内置了 npx ,可以启动本地的 CLI 工具;
    • 极大的简化了控制台输出;

总结

  1. npm6 之后,可以说 npm 已经和 yarn 非常接近,甚至没有差距了,很多新的项目,又重新从 yarn 转回到 npm

  2. 这两个包管理器是目前的主流,都必须要学习;

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 概述
  2. 2. npm 的问题
  3. 3. yarn 优势
  4. 4. 总结