从源码角度分析yarn安装依赖的过程

22b0eaadbb12b2f48d5f4387afd7c080.gif

yarn是我们经常用到的包管理工具,之前写过一篇文章文章《前端工程师应该知道的yarn知识》,里面介绍了作为前端攻城狮应该知道的yarn知识,但是对yarn安装包的具体过程,并没有具体讲解。

本文将从源码的角度解读yarn安装包的过程,为了方便大家理解,并不会搬源码出来,而是借助几张流程图,帮助大家了解这个过程。

本文将从以下几点来展开介绍:

  1. 工作中常见的问题

  2. yarn的一些核心概念

  3. yarn的具体安装过程

工作中常见的问题

各位小伙伴,工作中不知道是否有以下这些疑问呢?

  1. 安装依赖出现问题时,删除yarn.lock,再重新install,这样操作有风险吗?

  2. 开发时,我把所有依赖都安装到dependence中,会有问题吗?

  3. 项目和这个项目的某个依赖都依赖了同一个包,这个包会被多次安装、重复打包吗?

  4. 开发同一个项目,有的同学使用yarn,有的同学使用npm,有问题吗?

这里先不揭晓答案,读完本文可以解除这些困惑

基本概念

为了更好的理解yarn安装的过程,我们先复习一下yarn的一些重要概念。

Registry

registry 也就是我们常说的源,指模块仓库地址,  它提供了一个查询服务。

以 yarn 官方镜像源为例,它的查询服务网址是:https://registry.yarnpkg.com,我们可以在url后面拼接对应package名字,来查询某个包的所有版本的包信息,如 https://registry.yarnpkg.com / vue,也可以拼接具体的包版本,查看某个包的具体版本的包信息,如https://registry.yarnpkg.com/broccoli-kitchen-sink-helpers/0.3.1。下面我们看一下返回的具体包信息:

614441aab25ffcbe99a9d27c0fc5fb02.png

可以看到返回的包信息中,包括包名字,描述信息,作者,依赖dependence等信息。其中有一个dist对象,dist.tarball对应的是package压缩包的地址,dist.shasum对应的hash。

依赖版本

yarn 的包遵守 semver,即语义化版本。SemVer 是一套语义化版本控制的约定,定义的格式为:caf573a022f03ab0773d8dc45500e41b.pngyarn中 依赖版本范围 的表示方法有以下几种:f95267fc705a7964608d11200f6ab33e.png我们平时使用yarn add [package-name]命令安装依赖,默认使用的是 ^ 范围。每种范围表示方法的具体含义可参看

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值