dependency-updater

dependency-updater

熱門

適用於任何語言的智慧型相依性管理。自動偵測專案類型,安全更新自動套用,主要版本更新會提示使用者,並能診斷與修復相依性問題。

2215星標
213分支
更新於 2026/3/5
SKILL.md
唯讀
名稱
dependency-updater
描述

適用於任何語言的智慧型相依性管理。自動偵測專案類型,安全更新自動套用,主要版本更新會提示使用者,並能診斷與修復相依性問題。

Dependency Updater

適用於任何語言的智慧型相依性管理,具備自動偵測與安全更新功能。


快速開始

update my dependencies

此技能會自動偵測您的專案類型並處理後續作業。


觸發方式

觸發詞 範例
更新相依性 "更新相依性", "更新套件"
檢查過期套件 "檢查過期套件"
修復相依性問題 "修復我的相依性問題"
安全性稽核 "稽核相依性漏洞"
診斷相依性 "診斷相依性問題"

支援的語言

語言 套件檔案 更新工具 稽核工具
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 更新                             │
│ • 對每個 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

# 支援 monorepo
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

偵測順序對 monorepo 很重要:

  1. 先檢查目前目錄
  2. 再檢查 workspace/monorepo 模式
  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

# 或使用 constraints
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 安全性稽核