yarn是我们经常用到的包管理工具,之前写过一篇文章文章《前端工程师应该知道的yarn知识》,里面介绍了作为前端攻城狮应该知道的yarn知识,但是对yarn安装包的具体过程,并没有具体讲解。
本文将从源码的角度解读yarn安装包的过程,为了方便大家理解,并不会搬源码出来,而是借助几张流程图,帮助大家了解这个过程。
本文将从以下几点来展开介绍:
工作中常见的问题
yarn的一些核心概念
yarn的具体安装过程
工作中常见的问题
各位小伙伴,工作中不知道是否有以下这些疑问呢?
安装依赖出现问题时,删除yarn.lock,再重新install,这样操作有风险吗?
开发时,我把所有依赖都安装到dependence中,会有问题吗?
项目和这个项目的某个依赖都依赖了同一个包,这个包会被多次安装、重复打包吗?
开发同一个项目,有的同学使用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
。下面我们看一下返回的具体包信息:
可以看到返回的包信息中,包括包名字,描述信息,作者,依赖dependence等信息。其中有一个dist对象,dist.tarball对应的是package压缩包的地址,dist.shasum对应的hash。
依赖版本
yarn 的包遵守 semver,即语义化版本。SemVer 是一套语义化版本控制的约定,定义的格式为:yarn中 依赖版本范围 的表示方法有以下几种:我们平时使用yarn add [package-name]
命令安装依赖,默认使用的是 ^ 范围。每种范围表示方法的具体含义可参看