依赖升级与兼容性

让 Agent 按 SemVer、变更日志、peer 约束与 lockfile 一致性推进升级:分批合并、特性开关与可执行回滚。本页按「流程 → 版本语义 → 锁文件 → 迁移与观测 → SKILL → depup-page 清单」组织。

先区分补丁、次版本与主版本;对传递依赖冲突,SKILL 要求输出解析树差异与 pin 理由。安全补丁尽量独立 PR,与功能升级解耦。

升级主流程(skill-flow-block)

  [ 清点:直接依赖 + 传递链 + peer / optional ]
                    │
                    ▼
         ┌──────────────────────┐
         │  SemVer:目标版本档位   │──── 读 CHANGELOG / Releases;
         │  与破坏性矩阵          │      主版本默认扩测试或合约
         └──────────────────────┘
                    │
                    ▼
         ┌──────────────────────┐
         │  Lockfile:同一解析器   │──── npm / pnpm / pip / Go modules …
         │  与镜像源在 CI 与本地一致 │      禁止「只改 package 不改 lock」分叉
         └──────────────────────┘
                    │
                    ▼
         ┌──────────────────────┐
         │  迁移:codemod / 适配   │──── 特性开关渐进;废弃 API 给替代与时间表
         │  与预发或金丝雀观测      │
         └──────────────────────┘
                    │
                    ▼
              [ 合流 │ 保留回滚:上一 lock 快照 / tag / revert 命令 ]

顺序要点:版本语义与 lock 一致性先于大改代码;合流后靠指标验收,并把「回到上一解析结果」写成一条可执行命令,而不是口头约定。

SemVer 与破坏性变更检测

补丁与次版本仍可能因类型收紧、Node/Java 运行时差异或隐式行为变化而破坏构建;主版本升级必须假设 API 面变化,并核对官方迁移指南。

  • 阅读 CHANGELOG:关注 Breaking、弃用周期与最低运行时要求。
  • Peer 依赖:框架插件、engines、原生模块 ABI 与操作系统矩阵一并列出。
  • 废弃 API:给出替代路径与计划移除版本,避免静默堆积技术债。

npm-check-updates 使用与分批升级策略:

# npm-check-updates 检测可升级依赖
# 安装
npm install -g npm-check-updates

# 查看所有可升级依赖(不修改 package.json)
npx ncu

# 只升级 patch 版本
npx ncu --target patch -u
npm install

# 只升级 minor 版本
npx ncu --target minor -u
npm install

# 升级指定包的 major 版本(需单独处理)
npx ncu -u react react-dom
npm install

# 查看依赖树差异(升级前后对比)
npm ls --depth=2 > deps-before.txt
npx ncu -u && npm install
npm ls --depth=2 > deps-after.txt
diff deps-before.txt deps-after.txt

# 分批升级策略(推荐顺序)
# 批次1: patch(自动合并,风险最低)
# 批次2: minor(冒烟测试后合并)
# 批次3: major(单独 PR + 迁移指南 + 扩展测试)
# 安全 CVE:独立 PR,走紧急通道

Lockfile 与解析一致性

国内镜像与 registry 切换时,须保证 CI、容器构建与开发者本地使用同一套锁文件与安装命令;否则会出现「本地绿、流水线红」的解析分叉。

  • Node:package-lock.json / pnpm-lock.yaml / yarn.lock 择一并全员一致;npm ci 类命令与缓存策略写进文档。
  • Python:requirements.txt 带哈希或 poetry.lock / uv.lock;禁止混用未锁定的范围升级。
  • Go:go.sum 与 module proxy;私有仓库凭据与 GOPRIVATE 说明清楚。

迁移、Renovate 配置与回滚

破坏性 API 迁移应附带 codemod 或渐进适配步骤;合并后在预发或金丝雀观察错误率与延迟,并明确回滚到上一 lock 快照或制品版本的操作。

  • 主版本升级默认附带扩展测试或合约测试更新。
  • 特性开关可隔离新依赖路径,便于快速关闭。
  • 记录与操作系统、语言运行时的兼容性矩阵,便于 on-call 对照。

Renovate 配置文件示例(patch 自动合并 + major 需人工审阅):

// renovate.json — 项目根目录
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],

  // 合并时间窗:工作日上午(减少噪音)
  "schedule": ["before 9am on Monday through Friday"],

  // patch 版本:自动合并(CI 全绿才合并)
  "packageRules": [
    {
      "matchUpdateTypes": ["patch"],
      "automerge": true,
      "automergeType": "pr",
      "requiredStatusChecks": ["CI / test", "CI / lint"]
    },
    // minor 版本:自动创建 PR,需人工 review
    {
      "matchUpdateTypes": ["minor"],
      "automerge": false,
      "labels": ["dependencies", "minor"]
    },
    // major 版本:分组到同一 PR,带 breaking change 标签
    {
      "matchUpdateTypes": ["major"],
      "automerge": false,
      "groupName": "major dependencies",
      "labels": ["dependencies", "major", "breaking-change"]
    },
    // 安全漏洞:立即创建 PR,不等时间窗
    {
      "matchCategories": ["security"],
      "schedule": "at any time",
      "automerge": false,
      "labels": ["security", "urgent"]
    }
  ],

  // lockfile 维护:每周更新 lockfile(无版本变更时)
  "lockFileMaintenance": {
    "enabled": true,
    "schedule": ["before 6am on Monday"]
  }
}

SKILL 片段

---
name: dependency-upgrade-cn
description: 评估依赖升级、SemVer、兼容性与 lockfile 一致性
---
# 检测工具
- npm-check-updates:npx ncu(查看)/ npx ncu -u(更新)
- Renovate:自动创建 PR,可配置 automerge
- npm audit:npx npm audit(安全漏洞检测)

# 分批升级策略
- 批次1: patch → automerge(CI 全绿)
- 批次2: minor → 创建 PR,冒烟测试后合并
- 批次3: major → 单独 PR + 迁移指南 + 扩展测试
- 安全 CVE → 独立 PR,走紧急通道不等时间窗

# 核对清单
1. CHANGELOG:Breaking / 弃用 / 最低运行时要求
2. peer 依赖:engines / 框架插件 / 原生模块 ABI
3. 传递依赖:npm ls --depth=2 前后 diff
4. lockfile:package-lock.json / pnpm-lock.yaml 择一并全员一致
5. CI 与本地使用同一 npm/pnpm 大版本

# Renovate automerge 配置要点
- patch: automerge: true, requiredStatusChecks: [CI/test]
- minor: automerge: false, 人工 review
- major: groupName 分组 + breaking-change 标签
- lockFileMaintenance: 每周维护 lockfile

# 回滚
- 记录升级前的 lock 提交 SHA / tag
- 回滚命令:git checkout <sha> -- package-lock.json && npm ci

升级自检清单(depup-page JS)

选择生态与升级档位后生成本页专用备忘(仅本地、无网络);贴进 issue 或 PR 描述前请按实际栈裁剪。

生态与锁文件
升级档位
附加面

升级备忘


                

返回技能库 更多技能入口