首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >Yarn >Yarn 的 lockfile 是怎么保证依赖版本一致的?

Yarn 的 lockfile 是怎么保证依赖版本一致的?

词条归属:Yarn

1. 用 yarn.lock 记录完整依赖树

  • Yarn 在项目中维护一个名为 yarn.lock 的文件,记录依赖树中每一个包的确切版本、解析地址和完整性校验值
  • 该文件由 Yarn 自动生成和维护,开发者不应手动编辑;执行 yarn add、yarn remove、yarn upgrade 等操作时,它会随之更新
  • 安装时 Yarn 只读取项目顶层的 yarn.lock,忽略各依赖内部可能存在的同名文件,因为顶层文件已包含整棵依赖树所需的全部信息

2. 通过三重机制保证确定性安装

  • 版本锁定:每个依赖都被锁定到确切版本号,消除 semver 范围(如 ^1.2.0)的歧义
  • 地址固化:存储完整的 tarball 下载地址,避免注册表解析漂移
  • 完整性校验:每个包条目都带有 SHA-512 校验哈希,下载后逐字节比对,确保内容未被篡改或损坏

3. 跨机器复现同一结果

  • 只要使用相同版本的 Yarn 并配合同一份 yarn.lock,不同机器上会得到完全一致的依赖树
  • yarn.lock 应纳入版本控制(如 Git),使团队成员、CI 服务器都能安装出相同的依赖
  • 需要注意的是,lockfile 只保证"解析结果一致",具体的 node_modules 目录布局还依赖 Yarn 自身的提升算法,因此不同 Yarn 版本之间可能出现目录结构差异
相关文章
MySQL是怎么保证数据一致性的
在《写数据库同时发mq消息事务一致性的一种解决方案》一文的方案中把分布式事务巧妙转成了数据库事务。我们都知道关系型数据库事务能保证数据一致性,那数据库到底是怎么设计事务这一特性的呢?
普通程序员
2019-11-07
4.5K0
hashMap怎么保证hash一致性的
学Java的都知道hashMap的底层是“链表散列”的数据结构也也可以说是hash表。在put的实话先根据key的hashcode重新计算hash值的,而我们又知道hash是一种算法。所以哈希码并不是完全唯一的。
凯哥Java
2019-06-28
9080
怎么保证 redis 和 db 中的数据一致
读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性问题。
葆宁
2019-04-18
1.5K0
25 | MySQL是怎么保证高可用的?
正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。
HaC
2020-12-30
1.3K0
你们系统是怎么保证高可用的
高可用(HA)是系统架构设计中必须要考虑的,是指系统所能提供无故障服务的一种能力。
架构师修炼
2020-07-20
1.8K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券