dependabot や renovate などが作った PR を手動ないし、オートマージで運用している人も多いと思いますが、このライブラリって何処で使われてるんだっけ?とか、どの依存なんです?を任意のタイミングで確認したい時に便利コマンド直ぐに忘れてしまうので、自分用にまとめておこうと思いこの記事を書くことにしました。
FYI:
https://docs.github.com/ja/code-security/dependabot
https://docs.renovatebot.com/
尚、全て pnpm v9.x の内容を前提としています。
pnpm audit
依存関係の脆弱性チェックに使います。プロジェクトの依存関係を分析し、既知のセキュリティ脆弱性を報告してくれます。
報告の中身としてはこんな感じ
- Severity: 脆弱性の深刻度(Low、Moderate、High、Critical)
- Package: 脆弱性を持つパッケージの名前
- Version: 影響を受けるパッケージのバージョン範囲
- Path: 脆弱性を持つパッケージが依存関係ツリー内でどこに位置するか
- More Info: 脆弱性の詳細と推奨される修正についてのリンク
特定の深刻度以上の脆弱性のみを表示するには、次のように --audit-level
オプションを使用します
pnpm audit --audit-level high
CI として組み込んで、脆弱性対応するまではリリース出来ないようにも出来ますね。
ちなみに、特定の脆弱性を許容したい場合、コマンドでの ignore オプションはないっぽくって、package.json で定義するようなことが書いてあります。
If you want to tolerate some vulnerabilities as they don't affect your project, you may use the pnpm.auditConfig.ignoreCves setting.
こんな感じですかね
{
"pnpm": {
"auditConfig": {
"ignoreCves": [
"CVE-2022-36313"
]
}
}
}
他にも devDependencies のみ見る --dev
, -D
オプションや、
プロダクションの dependencies のみを見る --prod
, -P
オプションなどがあります。
pnpm list
パッケージ管理しているすべてのライブラリバージョンと依存関係を出力してくれます。
まあでも package.json 見ればええやろで単独で使うことあんまないかも。
pnpm outdated
パッケージ管理しているすべてのライブラリが最新からどれくらい更新が遅れているかを一覧で見ることが出来ます。引数にパッケージ名を入れれば、任意の範囲で見ることも可能です。良く使うかは微妙ではある。
pnpm outdated "*angular*"
pnpm why
これは結構使うんじゃないですかね。
引数に調べたいライブラリを指定して、依存ツリーを表示してくれます。
これ何処で使われてるんじゃ?あー jest で使われてるんですね、じゃテスト通ってるからええやろ、みたいな判断材料として使います。
pnpm why semver
pnpm licenses
管理する依存関係のメタデータからライセンス情報を抽出します。依存関係の package.json ファイル内の license フィールドを参照し、それらを一覧表示するそうです。まあ普段あんまり意識しないかな。