yarn install 命令行执行时,背后发生的事情

简介: yarn install 命令行执行时,背后发生的事情

在深入解析 yarn install 命令行执行的背后过程之前,让我们先对 Yarn 有一个基本的认识。Yarn 是一个现代的包管理工具,它为 JavaScript 社区提供了一个快速、可靠、安全的方式来管理项目依赖。从 Yarn 的初衷来看,它旨在解决 npm(Node Package Manager)在处理大型项目、依赖管理以及安装速度方面的一些问题。

当你在项目目录下执行 yarn install 命令时,Yarn 会经历几个关键的步骤来确保依赖被正确安装,这个过程涵盖了解析依赖、查找、下载以及链接这些依赖包。接下来,我将详细解释这一过程的每个步骤,并举例说明。

1. 解析 package.json 文件

首先,Yarn 会读取项目根目录下的 package.json 文件。这个文件是一个 JSON 格式的文档,列出了项目的依赖(包括直接依赖和开发依赖)、版本号、脚本命令等信息。Yarn 通过解析这个文件来确定需要安装哪些包以及这些包的版本约束。

2. 检查 .yarnrc.npmrc 配置文件

Yarn 还会检查项目目录或用户主目录下的 .yarnrc.npmrc 文件,这些文件包含了包管理器的配置选项,如代理设置、镜像源地址等。这些配置可以影响 Yarn 的行为,比如它会从哪个源下载包。

3. 生成 yarn.lock 文件

如果是首次运行 yarn install 或者 package.json 中的依赖有更新,Yarn 会生成(或更新)一个 yarn.lock 文件。这个文件锁定了项目依赖的具体版本,确保了团队成员之间安装的依赖一致性,避免了“在我的机器上可以运行”的问题。

4. 解析依赖

Yarn 会根据 package.jsonyarn.lock (如果存在)中的信息,解析出需要安装的所有依赖及其版本。在这个过程中,Yarn 会计算依赖树,确定哪些包是直接依赖,哪些包是间接依赖。

5. 查找并下载依赖

接下来,Yarn 会查询本地缓存,看看所需的包版本是否已经下载过。如果缓存中没有,Yarn 则会从远程仓库(如 npm 官方仓库或配置的镜像源)下载包到本地缓存。这一步骤是并发执行的,大大加快了依赖的下载速度。

6. 链接依赖

下载完成后,Yarn 会将这些包从本地缓存复制到 node_modules 目录,并根据依赖关系进行链接。这个步骤确保了项目代码可以正确地引用到安装的包。

7. 运行生命周期脚本

Yarn 还会根据 package.json 中定义的生命周期脚本,在适当的时机运行它们。比如,postinstall 脚本会在所有依赖安装完成后执行,这可以用来执行一些额外的设置或编译工作。

举例说明

假设我们有一个项目,其 package.json 中声明了对 reactlodash 的依赖。当执行 yarn install 时:

  1. Yarn 解析 package.json,发现需要 reactlodash
  2. 检查 .yarnrc.npmrc,确认是否有特殊配置。
  3. 生成或更新 yarn.lock,锁定 reactlodash 的版本。
  4. 解析依赖,构建依赖树,识别所有需要的包。
  5. 并发从远程仓库下载 reactlodash 及其所有依赖到本地缓存。
  6. 将下载的包链接到 node_modules 目录。
  7. 如果定义了 postinstall 脚本,执行该脚本。

通过这个过程,Yarn 确保了项目依赖的快速、一致和安全安装。与 npm 相比,Yarn 在性能、安全性以及依赖管理方面提供了显著的改进,尤其是在处理大型项目和复杂依赖树时。

相关文章
|
6月前
|
资源调度 JavaScript Windows
yarn install命令报错解决办法-warning package-lock.json found.
yarn install命令报错解决办法-warning package-lock.json found.
112 0
|
6月前
|
资源调度 JavaScript Windows
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
476 1
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
|
6天前
|
资源调度
Yarn install 报错 Resolving packages... [2/4] Fetching packages... info There appears to be trouble wi
Yarn install 报错 Resolving packages... [2/4] Fetching packages... info There appears to be trouble wi
131 0
|
资源调度 Windows
yarn install 遇到的错误消息 - Error EPERM operation not permitted, open .yarnrc
yarn install 遇到的错误消息 - Error EPERM operation not permitted, open .yarnrc
560 0
yarn install 遇到的错误消息 - Error EPERM operation not permitted, open .yarnrc
|
JSON 资源调度 安全
yarn.lock 文件和 yarn install
Yarn 是代码的包管理器。 它允许您与来自世界各地的其他开发人员一起使用和共享(例如 JavaScript)代码。 Yarn 可以快速、安全、可靠地执行此操作,因此您无需担心。
yarn.lock 文件和 yarn install
|
8月前
|
分布式计算 资源调度 监控
Hadoop学习笔记(四)之YARN
Hadoop学习笔记(四)之YARN
|
9月前
|
分布式计算 资源调度 Hadoop
Flink安装部署{单机模式、会话模式(集群部署)、yarn模式(包含hadoop3.1.3部署)}
Flink安装部署{单机模式、会话模式(集群部署)、yarn模式(包含hadoop3.1.3部署)}
351 0
|
6天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
64 9
|
6天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
【4月更文挑战第4天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
38 4