SuperAPI AI 工具集

dependency-audit

部署与运维

查看项目

更新于 10-15 10:59

技能介绍

用途

Dependency Audit 用于对项目依赖进行审计、更新和漏洞管理,支持 npm、pip 以及其他包管理器(Yarn、pnpm)。当用户需要审计依赖、更新依赖或处理依赖漏洞时使用。

主要能力

npm / Node.js

安全审计:

npm audit
npm audit --json              # Machine-readable
npm audit --production        # Production deps only

npm audit fix
npm audit fix --force         # Allow major version bumps

检查特定安全公告:

npm audit --advisory=1234

检查过期依赖:

npm outdated

输出示例:

Package    Current  Wanted  Latest  Location
express    4.17.1   4.17.3  5.0.0   my-app
lodash     4.17.20  4.17.21 4.17.21 my-app

其中 Wanted 表示匹配 package.json 中 semver 范围的最高版本,Latest 表示已发布的最新版本。

更新策略:

npm update
npm update express
npm install express@latest

npx npm-check-updates         # List all updates
npx npm-check-updates -u      # Update package.json
npm install                    # Install updated

npx npm-check-updates --target minor  # Only minor+patch
npx npm-check-updates --target patch  # Only patch

锁文件管理:

rm package-lock.json && npm install
npm ci    # Clean install from lock file (CI)
npm dedupe

Python / pip

审计:

pip install pip-audit
pip-audit
pip-audit -r requirements.txt
pip-audit --fix               # Auto-fix vulnerabilities
pip-audit --json              # Machine-readable

pip install safety
safety check
safety check -r requirements.txt

检查过期依赖:

pip list --outdated
pip list --outdated --format=json
pip show package-name

更新策略:

pip install --upgrade requests

pip list --outdated --format=json | python -c "
import json, sys
for pkg in json.load(sys.stdin):
    print(pkg['name'])" | xargs -n1 pip install --upgrade

pip freeze > requirements.txt

pip-tools(推荐):

pip install pip-tools

# requirements.in:
# flask
# sqlalchemy>=2.0

pip-compile requirements.in
pip-compile --upgrade requirements.in
pip-compile --upgrade-package flask requirements.in
pip-sync requirements.txt

Yarn

yarn audit
yarn audit --level moderate    # Only moderate+

yarn outdated

yarn upgrade                   # Within ranges
yarn upgrade --latest          # To latest versions
yarn upgrade-interactive       # Interactive picker

yarn dedupe

pnpm

pnpm audit
pnpm audit --fix

pnpm outdated

pnpm update
pnpm update --latest
pnpm update --interactive

Renovate / Dependabot

Dependabot(GitHub)配置示例:

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10
    reviewers:
      - "team-name"
    labels:
      - "dependencies"
    groups:
      dev-deps:
        patterns:
          - "*"
        dependency-type: "development"
      prod-deps:
        patterns:
          - "*"
        dependency-type: "production"

  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

Renovate 配置示例:

// renovate.json
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],
  "schedule": ["before 6am on Monday"],
  "automerge": true,
  "automergeType": "pr",
  "packageRules": [
    {
      "matchUpdateTypes": ["patch"],
      "automerge": true
    },
    {
      "matchUpdateTypes": ["major"],
      "automerge": false,
      "labels": ["breaking"]
    }
  ]
}

许可证检查

npx license-checker --summary
npx license-checker --onlyAllow "MIT;ISC;BSD-3-Clause;Apache-2.0"

pip install pip-licenses
pip-licenses --summary
pip-licenses --allow-only "MIT;BSD;Apache-2.0"

使用方式

推荐的更新工作流:

  1. 检查哪些依赖已过期:npm outdated / pip list --outdated
  2. 运行审计查找漏洞:npm audit / pip-audit
  3. 先更新补丁版本(最安全):npx ncu --target patch -u && npm install
  4. 运行测试:npm test / pytest
  5. 更新次版本:npx ncu --target minor -u && npm install && npm test
  6. 逐个更新主版本:npm install package@latest && npm test,并阅读主版本升级的迁移指南
  7. 提交并推送:git add package.json package-lock.json,git commit -m "chore: update dependencies"

关于 CI 集成与自动化,可参考 references/automation.md。

适用场景

  • 需要审计项目依赖中的安全漏洞
  • 需要检查并更新过期依赖
  • 需要管理锁文件、去重依赖
  • 需要配置 Dependabot 或 Renovate 实现自动化依赖更新
  • 需要检查依赖许可证合规性

限制

资料中未提供关于该技能的具体平台限制、收费方式或效果保证等信息。