yarn是一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的。

比如

1: npm  install 时候特别慢

2:同一个项目,安装的时候无法保持一致性。由于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的优点?

  • 速度快 。速度快主要来自以下两个方面:
  1. 并行安装:无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装。而 Yarn 是同步执行所有任务,提高了性能。
  2. 离线模式:如果之前已经安装过一个软件包,用Yarn再次安装时之间从缓存中获取,就不用像npm那样再从网络下载了。
  • 安装版本统一:为了防止拉取到不同的版本,Yarn 有一个锁定文件 (lock file) 记录了被确切安装上的模块的版本号。每次只要新增了一个模块,Yarn 就会创建(或更新)yarn.lock 这个文件。这么做就保证了,每一次拉取同一个项目依赖时,使用的都是一样的模块版本。npm 其实也有办法实现处处使用相同版本的 packages,但需要开发者执行 npm shrinkwrap 命令。这个命令将会生成一个锁定文件,在执行 npm install 的时候,该锁定文件会先被读取,和 Yarn 读取 yarn.lock 文件一个道理。npm 和 Yarn 两者的不同之处在于,Yarn 默认会生成这样的锁定文件,而 npm 要通过 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有当这个文件存在的时候,packages 版本信息才会被记录和更新。
  • 更简洁的输出:npm 的输出信息比较冗长。在执行 npm install <package> 的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,Yarn 简洁太多:默认情况下,结合了 emoji直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。
  • 多注册来源处理:所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。
  • 更好的语义化: yarn改变了一些npm命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 install/uninstall 要更清晰。
npm yarn
npm install yarn
npm install react --save yarn add react
npm uninstall react --save yarn remove react
npm install react --save-dev yarn add react --dev
npm update --save yarn upgrade

npm的未来:npm5.0

有了yarn的压力之后,npm做了一些类似的改进。

  1. 默认新增了类似yarn.lock的 package-lock.json;
  2. git 依赖支持优化:这个特性在需要安装大量内部项目(例如在没有自建源的内网开发),或需要使用某些依赖的未发布版本时很有用。在这之前可能需要使用指定 commit_id 的方式来控制版本。
  3. 文件依赖优化:在之前的版本,如果将本地目录作为依赖来安装,将会把文件目录作为副本拷贝到 node_modules 中。而在 npm5 中,将改为使用创建 symlinks 的方式来实现(使用本地 tarball 包除外),而不再执行文件拷贝。这将会提升安装速度。目前yarn还不支持。

总结

在npm5.0之前,yarn的优势特别明显。但是在npm之后,通过以上一系列对比,我们可以看到 npm5 在速度和使用上确实有了很大提升,值得尝试,不过还没有超过yarn。

综上我个人的建议是如果你已经在个人项目上使用 yarn,并且没有遇到更多问题,目前完全可以继续使用。但如果有兼容 npm 的场景,或者身处在使用 npm,cnpm,tnpm 的团队,以及还没有切到 yarn 的项目,那现在就可以试一试 npm5 了。

yarn与npm的区别相关推荐

  1. 不光教女朋友学会了Yarn,还让她明白了Yarn与npm的区别

    在进行正文之前,首先提供Yarn的三大网址,祝你练成Yarn功大法:Yarn官网.中文官网.Yarn Github地址 在安装Yarn之前,我们要确保已经成功安装了Node.js,关于Node.js的 ...

  2. Yarn 和 NPM 国内镜像(淘宝镜像)

    闲话不多说,直接上干货! 这里给还没用过yarn的同学推荐一手yarn,具体差别看:yarn 和 npm 的区别 Yarn 查看当前镜像 yarn config get registry 设置为淘宝镜 ...

  3. yarn和npm区别

    我在面试的时候突然被问道,懵了一下,现在整理一些资料. yarn的出现 yarn 是一个由Facebook.Google.Exponent和Tilde构建的新的JavaScript包管理器.它的出现是 ...

  4. yarn、npm、cnpm三者区别

    放一张实验室的合照压压惊,有点想实验室的兄弟们了~~~ 一.原理分析 npm (1)npm 是Node.js 能够如此成功的主要原因之一.npm 团队做了很多的工作,以确保 npm 保持向后兼容,并在 ...

  5. npm、yarn、pnpm的区别

    yarn 与 npm对比 yarn相对于npm的主要优点:速度快 并行安装 无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务.npm 是按照队列执行每个 package,也就是说必须 ...

  6. 了解 yarn 、npm、nodejs

    了解 yarn .npm.nodejs 一.前言 针对即将上线的 jeecg-boot 做一些准备. 二.了解系列 1.了解 nodejs Node.js 就是运行在服务端的 JavaScript.N ...

  7. yarn和npm常用基本命令安装和卸载

    初始化项目 yarn init / npm init 初始化项目 批量安装 yarn / npm install 安装package配置的依赖yarn install --force / npm in ...

  8. pnpm、yarn和npm包管理器淘宝镜像和对比

    pnpm的特点 1.快速 pnpm比其他包管理器快2倍. pnpm 不仅比 npm 快,而且比 yarn 快.无论是冷缓存还是热缓存,它都比 yarn 快.yarn 从缓存中复制文件,而 pnpm 只 ...

  9. 【Vue】npm install -g 和 npm install 区别

    npm 是一款nodeJs的包管理工具,是属于国外的一款镜像工具,有时候运行的性能远不及yarn及cnpm. 很多初学者(包括我)在刚开始接触npm的时候,就直接使用npm install xxx 安 ...

最新文章

  1. 电子与计算机工程 加拿大,加拿大本科热门专业:电子与计算机工程
  2. c语言图形方式初始化,c语言图形方式下的编程.doc
  3. JDK8 HashMap--removeNode()移除节点方法
  4. 线性支持向量机完全理解版
  5. 骗人的数学题,那消失的1块钱到底被谁拿走了
  6. java dispose事件_Android-在 ViewModel 中使用 AutoDispose2 解决 RxJava 的内存泄露问题
  7. java系统参数表有哪些_Java 设置系统参数和运行参数
  8. java jackson_Jackson 框架的高阶应用
  9. ssm连接mysql引入外部配置文件username无法被正确解析
  10. LPDDR4协议规范之(二)复位和上电初始化
  11. 点菜宝系统服务器无响应,点菜宝系统精典方案介绍
  12. 华硕路由 ac ax_【路由器】华硕网络开启802.11ax电竞生态
  13. Java由浅入深,考试or面试专用(自我整理)
  14. python画圆填色_如何用python在图像上绘制不同笔触和填充颜色的文本?
  15. 英语时态:一般、否定疑问句、现表将来
  16. gen阻抗 pcie_PCIe Gen3/Gen4接收端链路均衡测试(上篇:理论篇)
  17. 走向Web渗透工程师
  18. Day15 --框架集合 Collection集合 和 List 集合
  19. 屏山计算机学校,四川省屏山县职业技术学校
  20. C# 是否读到文件尾, 怎么判断

热门文章

  1. html5电路模拟器,eda仿真软件
  2. MOSFET结构及工作原理
  3. 办公技巧 使用插件提取word中的连续页
  4. [XCode] Frame Rectangle 和 Alignment Rectangle 的区别
  5. cassandra nodetool 指令
  6. 如何使生活变得更有趣
  7. 消息推送系统——(零)推倒萝莉之术
  8. Tekla如何使用参考模型?Tekla 20问,赶快收藏?
  9. 二手交易市场的数据流图
  10. 情人节,技术男可知单身女神的心声