dependency-updater

dependency-updater

热门

智能依赖管理,支持任何语言。自动检测项目类型,自动应用安全更新,提示主要版本更新,诊断并修复依赖问题。

2215Star
213Fork
更新于 2026/3/5
SKILL.md
readonly只读
name
dependency-updater
description

智能依赖管理,支持任何语言。自动检测项目类型,自动应用安全更新,提示主要版本更新,诊断并修复依赖问题。

依赖更新器

智能依赖管理,自动检测并安全更新任何语言的项目依赖。


快速开始

更新我的依赖

该技能会自动检测您的项目类型并处理其余操作。


触发词

触发词 示例
更新依赖 "更新依赖", "更新 deps"
检查过时 "检查过时的包"
修复依赖问题 "修复我的依赖问题"
安全审计 "审计依赖漏洞"
诊断依赖 "诊断依赖问题"

支持的语言

语言 包文件 更新工具 审计工具
Node.js package.json taze npm audit
Python requirements.txt, pyproject.toml pip-review safety, pip-audit
Go go.mod go get -u govulncheck
Rust Cargo.toml cargo update cargo audit
Ruby Gemfile bundle update bundle audit
Java pom.xml, build.gradle mvn versions:* mvn dependency:*
.NET *.csproj dotnet outdated dotnet list package --vulnerable

快速参考

更新类型 版本变化 操作
固定版本 ^~ 跳过(有意锁定)
PATCH x.y.zx.y.Z 自动应用
MINOR x.y.zx.Y.0 自动应用
MAJOR x.y.zX.0.0 逐个提示用户

工作流程

用户请求
    │
    ▼
┌─────────────────────────────────────────────────────┐
│ 步骤 1: 检测项目类型                                 │
│ • 扫描包文件(package.json, go.mod...)              │
│ • 识别包管理器                                       │
├─────────────────────────────────────────────────────┤
│ 步骤 2: 检查先决条件                                 │
│ • 验证所需工具是否已安装                             │
│ • 如果缺失,建议安装                                 │
├─────────────────────────────────────────────────────┤
│ 步骤 3: 扫描更新                                     │
│ • 运行语言特定的过时检查                             │
│ • 分类:MAJOR / MINOR / PATCH / 固定版本             │
├─────────────────────────────────────────────────────┤
│ 步骤 4: 自动应用安全更新                             │
│ • 自动应用 MINOR 和 PATCH                            │
│ • 报告已更新的内容                                   │
├─────────────────────────────────────────────────────┤
│ 步骤 5: 提示主要版本更新                             │
│ • 对每个 MAJOR 更新询问用户                          │
│ • 显示当前 → 新版本                                  │
├─────────────────────────────────────────────────────┤
│ 步骤 6: 应用批准的 MAJOR                             │
│ • 仅更新已批准的包                                   │
├─────────────────────────────────────────────────────┤
│ 步骤 7: 完成                                         │
│ • 运行安装命令                                       │
│ • 运行安全审计                                       │
└─────────────────────────────────────────────────────┘

各语言命令

Node.js (npm/yarn/pnpm)

# 检查先决条件
scripts/check-tool.sh taze "npm install -g taze"

# 扫描更新
taze

# 应用 minor/patch
taze minor --write

# 应用特定的 major
taze major --write --include pkg1,pkg2

# 单体仓库支持
taze -r  # 递归

# 安全
npm audit
npm audit fix

Python

# 检查过时
pip list --outdated

# 全部更新(小心!)
pip-review --auto

# 更新特定包
pip install --upgrade package-name

# 安全
pip-audit
safety check

Go

# 检查过时
go list -m -u all

# 全部更新
go get -u ./...

# 整理
go mod tidy

# 安全
govulncheck ./...

Rust

# 检查过时
cargo outdated

# 在 semver 范围内更新
cargo update

# 安全
cargo audit

Ruby

# 检查过时
bundle outdated

# 全部更新
bundle update

# 更新特定包
bundle update --conservative gem-name

# 安全
bundle audit

Java (Maven)

# 检查过时
mvn versions:display-dependency-updates

# 更新到最新
mvn versions:use-latest-releases

# 安全
mvn dependency:tree
mvn dependency-check:check

.NET

# 检查过时
dotnet list package --outdated

# 更新特定包
dotnet add package PackageName

# 安全
dotnet list package --vulnerable

诊断模式

当依赖出现问题时,运行诊断:

常见问题及修复

问题 症状 修复
版本冲突 "无法解析依赖树" 全新安装,使用 overrides/resolutions
对等依赖 "对等依赖未满足" 安装所需的对等版本
安全漏洞 npm audit 显示问题 npm audit fix 或手动更新
未使用的依赖 包体积臃肿 运行 depcheck (Node) 或等效工具
重复依赖 安装了多个版本 运行 npm dedupe 或等效工具

紧急修复

# Node.js - 彻底重置
rm -rf node_modules package-lock.json
npm cache clean --force
npm install

# Python - 清理虚拟环境
rm -rf venv
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Go - 重置模块
rm go.sum
go mod tidy

安全审计

为任何项目运行安全检查:

# Node.js
npm audit
npm audit --json | jq '.metadata.vulnerabilities'

# Python
pip-audit
safety check

# Go
govulncheck ./...

# Rust
cargo audit

# Ruby
bundle audit

# .NET
dotnet list package --vulnerable

严重程度响应

严重程度 操作
严重 立即修复
24小时内修复
中等 一周内修复
下个版本修复

反模式

避免 原因 替代方案
更新固定版本 有意锁定 跳过它们
自动应用 MAJOR 破坏性变更 提示用户
批量提示 MAJOR 失去上下文 逐个提示
跳过锁文件 不可重现的构建 始终提交锁文件
忽略安全警报 漏洞 按严重程度处理

验证清单

更新后:

  • [ ] 更新扫描无错误
  • [ ] MINOR/PATCH 已自动应用
  • [ ] MAJOR 更新已逐个提示
  • [ ] 固定版本未改动
  • [ ] 锁文件已更新
  • [ ] 安装命令已运行
  • [ ] 安全审计通过(或已记录问题)

<details>
<summary><strong>深入:项目检测</strong></summary>

该技能通过扫描包文件自动检测项目类型:

找到的文件 语言 包管理器
package.json Node.js npm/yarn/pnpm
requirements.txt Python pip
pyproject.toml Python pip/poetry
Pipfile Python pipenv
go.mod Go go modules
Cargo.toml Rust cargo
Gemfile Ruby bundler
pom.xml Java Maven
build.gradle Java/Kotlin Gradle
*.csproj .NET dotnet

单体仓库的检测顺序很重要:

  1. 首先检查当前目录
  2. 然后检查工作区/单体仓库模式
  3. 如果适用,提供递归运行选项

</details>

<details>
<summary><strong>深入:Node.js 与 taze</strong></summary>

先决条件

# 全局安装 taze(推荐)
npm install -g taze

# 或使用 npx
npx taze

智能更新流程

# 1. 扫描所有更新
taze

# 2. 应用安全更新(minor + patch)
taze minor --write

# 3. 对每个 major,提示用户:
#    "将 @types/node 从 ^20.0.0 更新到 ^22.0.0?"
#    如果同意,添加到批准列表

# 4. 应用批准的 major
taze major --write --include approved-pkg1,approved-pkg2

# 5. 安装
npm install  # 或 pnpm install / yarn

自动批准列表

某些包频繁进行 major 更新但向后兼容:

原因
lucide-react 图标库,major 更新是增量的
@types/* 类型定义,通常安全

</details>

<details>
<summary><strong>深入:版本策略</strong></summary>

语义化版本

MAJOR.MINOR.PATCH(例如 2.3.1)

MAJOR:破坏性变更 - 需要代码更改
MINOR:新功能 - 向后兼容
PATCH:错误修复 - 向后兼容

范围说明符

说明符 含义 示例
^1.2.3 Minor + Patch 允许 >=1.2.3 <2.0.0
~1.2.3 仅 Patch >=1.2.3 <1.3.0
1.2.3 精确(固定) 1.2.3
>=1.2.3 至少 任何 >=1.2.3
* 任意 最新(危险)

推荐策略

{
  "dependencies": {
    "critical-lib": "1.2.3",      // 关键库使用精确版本
    "stable-lib": "~1.2.3",       // 稳定库仅允许 Patch
    "modern-lib": "^1.2.3"        // 活跃库允许 Minor
  }
}

</details>

<details>
<summary><strong>深入:冲突解决</strong></summary>

Node.js 冲突

诊断:

npm ls package-name      # 查看依赖树
npm explain package-name # 为什么安装
yarn why package-name    # Yarn 等效命令

使用 overrides 解决:

// package.json
{
  "overrides": {
    "lodash": "^4.18.0"
  }
}

使用 resolutions 解决(Yarn):

{
  "resolutions": {
    "lodash": "^4.18.0"
  }
}

Python 冲突

诊断:

pip check
pipdeptree -p package-name

解决:

# 使用虚拟环境
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# 或使用约束文件
pip install -c constraints.txt -r requirements.txt

</details>


脚本参考

脚本 用途
scripts/check-tool.sh 验证工具是否已安装
scripts/run-taze.sh 使用适当标志运行 taze

相关工具

工具 语言 用途
taze Node.js 智能依赖更新
npm-check-updates Node.js taze 的替代品
pip-review Python 交互式 pip 更新
cargo-edit Rust Cargo 依赖管理
bundler-audit Ruby 安全审计