名称: 依赖更新器 描述: 智能依赖管理,支持任何语言。自动检测项目类型,自动应用安全更新,提示主要版本更新,诊断和修复依赖问题。 许可证: MIT 元数据: 版本: 1.0.0
依赖更新器
智能依赖管理,支持任何语言,自动检测和安全更新。
快速开始
更新我的依赖
该技能自动检测您的项目类型并处理其余部分。
触发器
| 触发器 | 示例 |
|---|---|
| 更新依赖 | “更新依赖”, “更新依赖” |
| 检查过时 | “检查过时的包” |
| 修复依赖问题 | “修复我的依赖问题” |
| 安全审计 | “审计依赖以查找漏洞” |
| 诊断依赖 | “诊断依赖问题” |
支持的语言
| 语言 | 包文件 | 更新工具 | 审计工具 |
|---|---|---|---|
| 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 |
快速参考
| 更新类型 | 版本更改 | 操作 |
|---|---|---|
| 固定 | 无 ^ 或 ~ |
跳过(故意固定) |
| 补丁 | x.y.z → x.y.Z |
自动应用 |
| 次要 | x.y.z → x.Y.0 |
自动应用 |
| 主要 | x.y.z → X.0.0 |
逐个提示用户 |
工作流程
用户请求
│
▼
┌─────────────────────────────────────────────────────┐
│ 步骤 1: 检测项目类型 │
│ • 扫描包文件(package.json, go.mod...) │
│ • 识别包管理器 │
├─────────────────────────────────────────────────────┤
│ 步骤 2: 检查先决条件 │
│ • 验证所需工具是否安装 │
│ • 如果缺失,建议安装 │
├─────────────────────────────────────────────────────┤
│ 步骤 3: 扫描更新 │
│ • 运行语言特定的过时检查 │
│ • 分类:主要 / 次要 / 补丁 / 固定 │
├─────────────────────────────────────────────────────┤
│ 步骤 4: 自动应用安全更新 │
│ • 自动应用次要和补丁更新 │
│ • 报告更新内容 │
├─────────────────────────────────────────────────────┤
│ 步骤 5: 提示主要更新 │
│ • 为每个主要更新询问用户问题 │
│ • 显示当前 → 新版本 │
├─────────────────────────────────────────────────────┤
│ 步骤 6: 应用批准的主要更新 │
│ • 仅更新批准的包 │
├─────────────────────────────────────────────────────┤
│ 步骤 7: 最终化 │
│ • 运行安装命令 │
│ • 运行安全审计 │
└─────────────────────────────────────────────────────┘
按语言命令
Node.js (npm/yarn/pnpm)
# 检查先决条件
scripts/check-tool.sh taze "npm install -g taze"
# 扫描更新
taze
# 应用次要/补丁
taze minor --write
# 应用特定主要
taze major --write --include pkg1,pkg2
# 单仓库支持
taze -r # 递归
# 安全
npm audit
npm audit fix
Python
# 检查过时
pip list --outdated
# 更新所有(谨慎!)
pip-review --auto
# 更新特定
pip install --upgrade 包名
# 安全
pip-audit
safety check
Go
# 检查过时
go list -m -u all
# 更新所有
go get -u ./...
# 整理
go mod tidy
# 安全
govulncheck ./...
Rust
# 检查过时
cargo outdated
# 在语义版本内更新
cargo update
# 安全
cargo audit
Ruby
# 检查过时
bundle outdated
# 更新所有
bundle update
# 更新特定
bundle update --conservative gem名称
# 安全
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 包名
# 安全
dotnet list package --vulnerable
诊断模式
当依赖损坏时,运行诊断:
常见问题与修复
| 问题 | 症状 | 修复 |
|---|---|---|
| 版本冲突 | “无法解析依赖树” | 清理安装,使用覆盖/解析 |
| 对等依赖 | “对等依赖不满足” | 安装所需对等版本 |
| 安全漏洞 | 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小时内修复 |
| 中等 | 1周内修复 |
| 低 | 下一个版本中修复 |
反模式
| 避免 | 为什么 | 代替 |
|---|---|---|
| 更新固定版本 | 故意固定 | 跳过它们 |
| 自动应用主要更新 | 破坏性变更 | 提示用户 |
| 批量提示主要更新 | 失去上下文 | 逐个提示 |
| 跳过锁定文件 | 不可重现构建 | 始终提交锁定文件 |
| 忽略安全警报 | 漏洞 | 按严重性处理 |
验证清单
更新后:
- [ ] 扫描更新无错误
- [ ] 次要/补丁自动应用
- [ ] 主要更新逐个提示
- [ ] 固定版本未动
- [ ] 锁定文件更新
- [ ] 安装命令运行
- [ ] 安全审计通过(或问题记录)
<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模块 |
Cargo.toml |
Rust | cargo |
Gemfile |
Ruby | bundler |
pom.xml |
Java | Maven |
build.gradle |
Java/Kotlin | Gradle |
*.csproj |
.NET | dotnet |
单仓库检测顺序重要:
- 先检查当前目录
- 然后检查工作区/单仓库模式
- 如果适用,提供递归运行选项
</details>
<details> <summary><strong>深入探讨:Node.js 与 taze</strong></summary>
先决条件
# 全局安装 taze(推荐)
npm install -g taze
# 或使用 npx
npx taze
智能更新流程
# 1. 扫描所有更新
taze
# 2. 应用安全更新(次要 + 补丁)
taze minor --write
# 3. 对于每个主要更新,提示用户:
# "更新 @types/node 从 ^20.0.0 到 ^22.0.0?"
# 如果同意,添加到批准列表
# 4. 应用批准的主要更新
taze major --write --include approved-pkg1,approved-pkg2
# 5. 安装
npm install # 或 pnpm install / yarn
自动批准列表
一些包经常有主要版本更新但向后兼容:
| 包 | 原因 |
|---|---|
lucide-react |
图标库,主要更新是添加性的 |
@types/* |
类型定义,通常安全 |
</details>
<details> <summary><strong>深入探讨:版本策略</strong></summary>
语义版本控制
主要.次要.补丁 (例如,2.3.1)
主要:破坏性变更 - 需要代码更改
次要:新功能 - 向后兼容
补丁:错误修复 - 向后兼容
范围指定符
| 指定符 | 含义 | 示例 |
|---|---|---|
^1.2.3 |
次要 + 补丁 OK | >=1.2.3 <2.0.0 |
~1.2.3 |
仅补丁 | >=1.2.3 <1.3.0 |
1.2.3 |
精确(固定) | 仅 1.2.3 |
>=1.2.3 |
至少 | 任何 >=1.2.3 |
* |
任何 | 最新(危险) |
推荐策略
{
"依赖": {
"关键库": "1.2.3", // 对关键库精确
"稳定库": "~1.2.3", // 对稳定库仅补丁
"现代库": "^1.2.3" // 对活跃库次要OK
}
}
</details>
<details> <summary><strong>深入探讨:冲突解决</strong></summary>
Node.js 冲突
诊断:
npm ls 包名 # 查看依赖树
npm explain 包名 # 为什么安装
yarn why 包名 # Yarn 等效
使用覆盖解决:
// package.json
{
"覆盖": {
"lodash": "^4.18.0"
}
}
使用解析(Yarn)解决:
{
"解析": {
"lodash": "^4.18.0"
}
}
Python 冲突
诊断:
pip check
pipdeptree -p 包名
解决:
# 使用虚拟环境
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 | 安全审计 |