Yarn和Npm对比

Yarn是什么?

Yarn是由Facebppk,Google,和Tilde 联合推出的一个新的JS包管理工具,正如官方文档写的,Yarn是为了弥补npm的一些缺陷而出现的。这让我想起了使用npm时的坑了

  • npm install的时候非常慢,特别是新的项目拉下来的时候等半天,删除node_modules重新install的时候依旧如此。
  • 同一个项目,安装的时候无法保持一致性,由于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中最新版本。这就麻烦了,常常会出现同一个项目,有的同事可以,有的同事会出现由于安装版本不一致而出现的bug

  • 安装的时候,包会在同一时间下载和安装,中途某个时候一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且甚至永远都不会注意到实际发生的错误

带着这些坑,开始了解yarn的优势及其解决的问题

yarn的优点

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

Yarn和npm命令对比

npmyarn
npm installyarn
npm install react–saveyarn add react
npm update–saveyarn upgrade
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要安装yarn,首先需要确保已经安装了npm,并且配置好了环境变量。然后可以通过运行命令 "npm install yarn -g" 来下载和安装yarn。 安装yarn相比于npm有一些优势。首先,yarn可以进行并行安装,而npm需要等待上一个任务安装完成才能继续下一个任务。其次,yarn可以离线安装,如果之前已经安装过一个包,再次使用yarn安装时会从缓存中获取,而npm会从网络下载。另外,yarn默认会锁定版本,保证环境的统一性,而npm默认会下载最新的最稳定版本,版本锁定可以解决包之间版本不兼容的问题。此外,yarn安装包时输出的信息比npm更简洁。 常用的yarn命令与npm对比如下: - 初始化项目: yarn init (npm init) - 安装依赖并保存到package.json: yarn add package_name (npm install package_name --save) - 移除依赖: yarn remove package_name (npm uninstall package_name --save) - 安装开发时的依赖: yarn add package_name --dev (npm install package_name --save-dev) - 更新依赖: yarn upgrade package_name (npm update package_name --save) - 安装全局依赖: yarn global add package_name (npm install package_name --global) - 发布/登录/退出: yarn publish/login/logout (npm publish/login/logout) - 运行命令: yarn run command_name (npm run command_name) - 运行测试: yarn test (npm test) 如果第一次使用yarn时遇到报错,可能是由于安装或配置出现了问题。可以检查一下环境是否正确配置,或者尝试重新安装yarn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季布,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值