yarn

npm 存在的问题

  1.  安装依赖花费的时间成本
  2.  npm客户端在安装依赖包时会自动执行其中的脚本,有安全性问题
  3.  为了确保项目开发人员所安装的依赖包版本相同,需要使用shrinkwrap.json 文件,
  4.  但这个工具不是默认生成的,需要程序员手动生成,并提交。
  5.  在npm中,更新一项单独的依赖会按照语义化版本的规则更新一堆无关的依赖。

 

yarn 介绍:

 是一款新的包管理器,将取代原有的基于npm客户端的工作流,但同时又保留了npm仓库的兼容性。

 它具备原油工作流的所有功能,但相比之下更加快速,安全,可靠。

 

  1.  快速:并行安装,缓存每个已经下载了的程序包,所以再次安装的时候不需要再次下载。
  2.  可靠:使用详尽的简洁的并使用lockfile和决定性算法来安装yarn可以保证只要安装运行在一个系统上,也将以完全相同的方式运行在其他系统上,yarn能够参与一个项目的所有用户维持相同的节点模块(node_modules)目录结构,有助于减少难以追踪的bug和在多台机器上肤质。

      3.   安全:yarn 在每一个安装包代码执行前,使用校验和的方式去验证包的完整性。

 

 

yarn的架构设计:

 在node的生态系统中,依赖会被安装到项目中的node_modules目录中,不过其内部的文件结构和实际的

 依赖关系数并不完全对应,因为安装过程存在重复依赖的合并机制。npm客户端在把依赖安装到

 node_modules 目录时存在不确定性。这种不确定性是指,由于安装依赖的顺序不同,得到的

 node_modules目录的内部结构可能和别人不一样,这样就会产生 ”在我电脑上是好的“的bug问题。

 

 yarn 解决上述问题和不确定性的方案是引入 lockfile 文件,并启用了一套新的安装算法,以此达到一致、

 可靠的结果。这个lockfile会吧所有的安装的依赖锁定在一个固定的版本上,确保每次安装所产生的

 node_modules 目录的文件结构在不同机器上总是一致的。这个lockfile 采用一种简明的格式来书写,

 其字段是有序的,以确保每次更新都是最小化的,易于 review 的。

 

yarn 的安装过程:

  1. 解析:yarn 首先开始解析依赖关系,它向仓库中发出请求,并递归查询各层依赖。
  2. 获取:接下来,yarn 会在全局的缓存目录中查找当前所需包是不是已经下载过了。如果还没有,yarn会把这个包下载下来,并把它存放在全局缓存中,这样它下次就可以离线安装了,无需重复下载。依赖包也可以以tar包的形式存放到版本控制系统中,以实现完全的离线安装
  3. 链接:最后,yarn包会把所有的文件从缓存中复制到本地 node_modules 目录中,这样所有的东西就链接为一个整体。

 

  由于把安装过程清晰的拆解开来,消灭了安装结果的不确定性,所以yarn 天生具备并行操作的能力。

 

 

yarn 安装:

  1. 利用 nam 安装

       npm install yarn -g

 

  1. mac 电脑用 homebrew 

       brew install yarn

 

yarn 的使用方式:

  1.  创建一个项目:

         yarn init    —     会在项目目录生成一个package.json  文件

 

  1. 添加、更新、删除一个依赖包文件
    1. 添加:  yarn add [package]@[version]
    2. 更新:  yarn update [package]@[version]
    3. 删除:  yarn  remove [package]

 

  1. 根据package.json 安装所有依赖

       yarn   或者 yarn install 

 

  1. 其他命令和npm 基本相同
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值