← 中文资源

简体中文版本

发布前冻结依赖更新

使用冻结锁文件安装,并在发布窗口暂停自动更新 PR,确保产物来自经过测试的依赖图。

阅读英文原文

概述

在 package.json 中固定直接依赖并不会固定传递依赖,只有锁文件记录了完整解析结果。冻结安装会在 package.json 与锁文件不一致时直接失败,这正是发布分支需要的行为:绝不静默解析出未经测试的版本。

步骤

  1. CI 严格按锁文件安装:
pnpm install --frozen-lockfile
# npm 等价命令
npm ci
  1. 在发布窗口内暂停自动化依赖 PR。Renovate 可用如下规则:
{
  "packageRules": [
    {
      "description": "Release freeze 2026-10-21 through 2026-10-28",
      "matchPackageNames": ["*"],
      "enabled": false
    }
  ]
}
  1. 在发布流水线中检查锁文件未变化:git diff --exit-code pnpm-lock.yaml。
  2. 发布结束后移除冻结规则,逐个小批量合并升级,每次合并后运行完整测试。

验证

预期发布构建期间锁文件差异为零,产物摘要与发布说明中记录的一致。若 --frozen-lockfile 失败,说明锁文件不同步,应显式运行 pnpm install --lockfile-only、审查差异并作为发布准备单独提交,而不是在流水线中自动修复。

注意事项

  • 冻结会延迟安全补丁,窗口应控制在数天而非数周。
  • 锁文件不覆盖基础镜像、系统包和运行时解析的对等依赖,镜像应使用摘要而非可变标签。
  • 冻结期间出现严重 CVE 时,走有记录的安全例外流程:只升级该包、完整回归后再恢复冻结。
  • 现有自动化分支不要强制推送,避免丢失评审记录。