首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >pnpm >pnpm 的锁文件 pnpm-lock.yaml 是如何保证依赖版本确定性的?

pnpm 的锁文件 pnpm-lock.yaml 是如何保证依赖版本确定性的?

词条归属:pnpm

1. 锁文件的核心作用

pnpm-lock.yaml 是 pnpm 的锁文件,记录项目中每个依赖的精确解析结果,包括实际安装的版本号、完整性校验哈希(integrity)、依赖关系图以及 patch 信息。该文件是确定性安装的来源:无论何时何地执行 pnpm install,只要 package.json 和 pnpm-lock.yaml 未被修改,安装的依赖树就完全一致。

2. 完整性校验机制

锁文件中的每个包条目都包含基于 SHA-512 的完整性哈希值。安装时,pnpm 会校验下载内容的哈希是否与锁文件中记录的一致,防止内容被篡改或传输损坏。对于使用 patch 修改过的依赖,锁文件还会额外记录 patch 文件的哈希,确保修改后的包内容同样可验证。

3. CI/CD 中的冻结锁文件模式

当 pnpm 检测到运行环境为 CI 时,会自动进入冻结锁文件模式(frozen-lockfile),拒绝任何对锁文件的修改。若 pnpm-lock.yaml 与 package.json 中的依赖声明不匹配,安装将直接失败并报错。这一机制杜绝了"本地能跑、CI 挂掉"的锁文件漂移问题,确保构建环境的可复现性。用户也可通过 pnpm install --frozen-lockfile 手动启用该模式。

相关文章
Vue团队核心成员开发的39行小工具 install-pkg 安装包,值得一学!
本文仓库 https://github.com/lxchuan12/install-pkg-analysis.git,求个star^_^[1]
若川
2021-12-13
1.1K0
什么是 npm、Yarn、pnpm? 有什么区别? 分别适应什么场景?
在前端开发中,包管理工具扮演着非常重要的角色。它们帮助开发者高效地管理项目的依赖,确保项目中所需的所有第三方库和工具都能按时安装,并且兼容版本。npm、Yarn 和 pnpm 是三款常用的包管理工具,它们各有特点,适用于不同的场景。那么,它们之间有什么区别呢?如何根据不同的需求选择最合适的工具呢?本文将一一解答这些问题。
猫头虎
2025-07-17
10.1K0
npm、yarn与pnpm详解
🔍 简介: npm是随Node.js一起安装的官方包管理工具,它为开发者搭建了一个庞大的资源库,允许他们在这个平台上搜索、安装和管理项目所必需的各种代码库或模块。
Allen_z
2024-06-14
1.4K0
尤雨溪推荐神器 ni ,能替代 npm/yarn/pnpm ?简单好用!源码揭秘!
想学源码,极力推荐之前我写的《学习源码整体架构系列》 包含jQuery、underscore、lodash、vuex、sentry、axios、redux、koa、vue-devtools、vuex4、koa-compose、vue-next-release、vue-this、create-vue等十余篇源码文章。
若川
2021-11-10
2.8K3
GitHub Actions 最小CI:Node 项目流水线
Docker Compose 依赖启动顺序:healthcheck 与 depends_on(yaml+图)。
安全风信子
2025-11-18
2120
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券