首页/开发/CI/CD 与发布速查/锁文件原则(跨生态共通)
构建与制品管理58 条

锁文件原则(跨生态共通)

锁文件把「这次用的确切版本」固化下来:提交入库、CI 按锁安装、升级以变更单形式评审,是构建可复现的前提。

CI/CD 与发布速查开发更新于 2026-10-13

锁文件原则是什么

锁文件把这次使用的确切版本与完整性校验固化下来:提交入库、CI 按锁严格安装、升级以独立变更评审——这是构建可复现的前提,也是供应链安全的基础。严格安装与常规安装的区别很关键:npm ci、yarn --frozen-lockfile 这类命令按锁还原并校验,不满足时直接失败而不是悄悄升级。

基本原则

原则一锁文件进版本库、进评审
原则二CI 用严格还原命令,而非解析升级命令
原则三升级走独立变更:diff 可读、风险可评估
完整性锁文件带哈希校验(如 go.sum、npm 的 integrity),防制品被替换
同步提交依赖清单与锁文件在同一提交更新,评审时一起看
一致性CI 校验清单与锁是否同步,严格还原命令会隐式验证

生态对照

生态锁文件还原命令
Node.jspackage-lock.json / yarn.lock / pnpm-lock.yamlnpm ci / yarn --frozen-lockfile
Pythonrequirements.txt(编译版)/ poetry.lock / uv.lockpip install -r / poetry install --sync
Gogo.sum(模块校验)go mod download
Maven无独立锁文件(Gradle 有)mvn -o dependency:resolve(离线复核)

典型使用场景

  • 团队协作:一份锁文件保证成员与容器构建依赖一致
  • CI 复现:严格模式确保构建与发布锁定同一版本树
  • 升级评审:锁文件 diff 暴露所有传递依赖变化
  • 安全响应:升级受漏洞影响的包并复核完整性校验
  • 跨环境一致:本地、预发、生产按同一锁还原
  • 来源收敛:依赖源(公共源换私源)变更时同步复核锁内解析地址

通用规则

通用规则
1. 锁文件进版本库、进评审
2. CI 用严格还原命令而非解析升级命令
3. 升级走独立变更:diff 可读、风险可评估
Maven 生态惯用固定版本号(无锁文件):依赖解析确定性靠「版本固定 + 仓库不可变」共同保证。
锁文件冲突不要随手重生成:合并冲突时人工比对双方变更,重生成等于放弃审阅。
锁文件格式随工具版本演进(如 npm 的 lockfileVersion 字段):团队统一工具版本,避免因格式来回改写产生巨量无关 diff。

易错点

  • 锁文件被 .gitignore 忽略:全队各自解析依赖,环境差异从依赖开始
  • 锁文件冲突随手重生成:可能连带升级无关包,冲突解决要审 diff
  • CI 跑的不是严格模式:装了比锁定更新的版本,线上内容与评审内容不一致
  • 长期不升级依赖:陈旧到无法安全升级,安排周期性批量升级窗口
  • 清单与锁脱节:只改依赖清单不更新锁文件,严格模式直接失败或还原出旧版本,两者必须同一提交

数据来源与参考

  • npm Docs《npm ci》
  • Poetry 文档
  • Go Modules Reference
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌