dependency-auditor について
JavaScriptプロジェクト向けの依存関係監査スキルです。脆弱性、古いパッケージや未使用の依存関係、バンドルサイズを確認するためのNPMコマンド、チェックリスト、更新方法、ロックファイルの運用指針を示します。
主な機能
- 01脆弱性の確認
- 02古いパッケージの確認
- 03未使用依存関係の検出
- 04バンドルサイズの分析
- 05更新方法とチェックリスト
- 06ロックファイルの指針
活用シーン
- 01NPMプロジェクトの依存関係監査
- 02パッケージの更新と整理の準備
- 03CIでの依存関係管理の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ onewave-ai/ claude-skills --skill dependency-auditorインストール後、Claude Code で/dependency-auditorを入力して読み込まれたか確認します。
詳細
依存関係の監査
手順
依存関係を監査する際は、次の手順で行います。
- セキュリティ監査を実行する
- 古くなったパッケージを確認する
- 未使用の依存関係を見つける
- バンドルサイズへの影響を分析する
- レビューして更新する
セキュリティ監査
# NPM audit
npm audit
# Get JSON output for processing
npm audit --json
# Fix automatically (safe fixes only)
npm audit fix
# Force fix (may have breaking changes)
npm audit fix --force
# PNPM
pnpm audit
# Yarn
yarn audit
古くなったパッケージの確認
# NPM
npm outdated
# Interactive update
npx npm-check-updates -i
# Update all to latest
npx npm-check-updates -u
npm install
# Check specific package
npm view <package> versions
未使用の依存関係を見つける
# Using depcheck
npx depcheck
# With details
npx depcheck --detailed
# Ignore patterns
npx depcheck --ignores="@types/*,eslint-*"
よくある誤検出
Depcheck は、実際には必要な以下の項目を未使用として検出することがあります。
@types/*パッケージ(TypeScript で使用)- ESLint/Prettier プラグイン(設定ファイルで参照)
- PostCSS プラグイン(設定ファイルで参照)
- Next.js プラグイン
- Babel プリセット
バンドルサイズの分析
# For Next.js
npx @next/bundle-analyzer
# General purpose
npx source-map-explorer dist/**/*.js
# Check package size before installing
npx package-phobia <package-name>
# Compare alternatives
npx bundlephobia-cli compare lodash ramda
依存関係のレビューチェックリスト
セキュリティ
- 重大または高リスクの脆弱性がない
- 依存関係が積極的に保守されている
- 既知の悪意あるパッケージがない
- ロックファイルがコミットされている
最新性
- メジャーバージョンが遅れていない(意図的な場合を除く)
- セキュリティパッチが適用されている
- 非推奨のパッケージが置き換えられている
整理状況
- 未使用の依存関係がない
- 重複したパッケージがない(ロックファイルを確認)
- devDependencies と dependencies が適切に設定されている
更新戦略
慎重に更新する(推奨)
# Update patch versions only
npm update
# Update specific package
npm install package@latest
積極的に更新する
# Update everything
npx npm-check-updates -u
npm install
npm test
対話形式で更新する
npx npm-check-updates -i
# Options:
# a - update all
# space - toggle selection
# enter - apply selected
Package.json の整理
{
"dependencies": {
// Runtime dependencies only
},
"devDependencies": {
// Build/test tools only
},
"peerDependencies": {
// For libraries only
},
"optionalDependencies": {
// Platform-specific (rare)
}
}
ロックファイルのベストプラクティス
- ロックファイル(package-lock.json、pnpm-lock.yaml、yarn.lock)は必ずコミットします。
- CI/CD では
npm ciを使用します(npm installではありません)。 - 破損した場合は、ロックファイルと node_modules を削除して再インストールし、再生成します。
- プロジェクトごとにロックファイルは1 つだけ使用します(パッケージマネージャーを混在させないでください)。
自動モニタリング
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
groups:
dev-dependencies:
dependency-type: "development"
コメント
Markdown 対応