# lockfile 比較・依存関係ツリー

2 つの lockfile を比べて、どのパッケージが追加・削除・更新されたかを表示します。あるパッケージがなぜ入っているか（入ってくる経路）と、同じパッケージの複数バージョンも分かります。ファイルはブラウザの外へ出ません。

- URL: https://tools.itlibra.com/ja/dependency-viewer
- 端末内で処理・アップロードなし
- 最終更新: 2026-10-26

## 使い方

1. package-lock.json・yarn.lock・pnpm-lock.yaml のファイルを選ぶか、テキストを貼り付けます。形式は自動で判定します。
2. 「依存関係ツリー」で直接の依存から展開し、パッケージ名で検索します。「なぜ入っているか」を押すと、直接の依存から対象までの経路を表示します。
3. 「重複」で、同じパッケージの複数バージョンと、それぞれを引き込んでいるパッケージを確認します。
4. 「差分」では更新後の lockfile も選び、「解析する」を押します。上げた・下げた・追加・削除・取得元・integrity の変化を一覧します。
5. 「CSV で保存」で差分の全件を表計算ソフトに読み込めます。

## こんなときに

- npm install の前後で package-lock.json がどう変わったかを確認したい
- ある間接の依存がなぜ入っているのかを、経路で確かめたい
- Dependabot や Renovate の更新 PR で、実際に上がったバージョンを一覧したい
- 同じライブラリが複数のバージョンで入っていないかを調べたい
- yarn や pnpm のプロジェクトで、lockfile の取得元やハッシュの変化を見たい

## できること

### 直接と間接を分けたツリー

dependencies・devDependencies・optionalDependencies・peerDependencies を区別して、プロジェクトの直接の依存から展開できます。peer は、インストールされているときだけ表示します。

### 経路で示す「なぜ入っているか」

対象のパッケージから、それを引き込んでいる依存をさかのぼり、直接の依存までの最短の経路を 1 本示します。

### 形式を自動判定

npm の lockfileVersion 1・2・3、yarn v1 と Berry（v2 以降）、pnpm の 5・6・9 を読みます。対応外の形式は理由を表示します。

### semver で比べる差分

同じパッケージのバージョンを semver の大小で比べ、上げた・下げたを分けます。メジャーの上げは警告の色で目立たせます。

### integrity の不一致を警告

バージョンは同じなのに integrity（ハッシュ）が違う場合は警告します。取得元が別のホストに変わった場合も示します。

### 完全ローカル

解析は Web Worker でブラウザ内だけで行います。lockfile の内容もファイル名も送信せず、解析ログにも残しません。


## 対応形式

### 読み込み

- package-lock.json（lockfileVersion 1・2・3）
- yarn.lock（yarn v1 の形式、yarn v2 以降の YAML 形式）
- pnpm-lock.yaml（lockfileVersion 5・6・9）

### 出力

- 画面の一覧
- 差分の CSV（UTF-8・BOM 付き）


## 対応状況

| 機能 | 対応 | 補足 |
| --- | --- | --- |
| 依存関係のツリー（直接・間接の区別） | 一部対応 | npm v1 と yarn v1 は直接の依存を記録していないため区別できません |
| 「なぜ入っているか」（入ってくる経路） | 対応 | 最短の経路を 1 本示します。全経路は示しません |
| 同じパッケージの複数バージョン | 対応 | — |
| 2 つの lockfile の差分（追加・削除・上げた・下げた） | 対応 | — |
| 取得元（resolved）と integrity の変化 | 一部対応 | 形式が違う 2 つの lockfile では取得元は比べません |
| 脆弱性の照会 | 非対応 | 照会には外部との通信が必要なため行いません |
| ライセンスの調査 | 非対応 | — |
| package.json だけからの解析 | 非対応 | lockfile を読みます |
| パッケージのインストールや lockfile の生成 | 非対応 | — |
| オフラインでの利用 | 対応 | 一度開いたあとは通信なしで動作 |

## 制限・注意事項

- ファイルは 1 つ 50 MB まで。貼り付けは 200 万文字までです。
- パッケージが 10 万件を超える lockfile は読み込みを止めます。
- 画面に出す件数は、検索が 200 件、重複が 300 パッケージ、差分が 5,000 行までです。CSV は差分の全件を出力します。
- lockfile の内容だけを見ます。インストール先の node\_modules や、実際に動いているバージョンは見ません。
- npm の workspace へのリンク（link）は一覧に含めません。

## プライバシーと安全性

読み込んだ lockfile は、お使いのブラウザの中だけで解析されます。サーバーへの送信・保存は行わず、ファイル名や内容が解析ログに記録されることもありません。ページを閉じると内容は消去されます。

## よくある質問

### package-lock.json の差分を見るには？

差分タブで、更新前と更新後の 2 つの package-lock.json を選び、「解析する」を押します。追加・削除・上げた・下げたパッケージを一覧し、メジャーの上げは警告の色で示します。

### なぜこのパッケージが入っているのか分かりますか？

はい。依存関係ツリーでパッケージ名を検索し、「なぜ入っているか」を押すと、直接の依存から対象までの最短の経路を表示します。

### yarn.lock や pnpm-lock.yaml も読めますか？

読めます。形式は自動で判定します。yarn v1 と npm v1 は直接の依存を記録しないため、直接と間接の区別はできません。

### 脆弱性やライセンスも分かりますか？

いいえ。脆弱性の照会には外部との通信が必要なので行いません。ライセンスも調べません。これらは専用のツールで確認してください。

### integrity が変わったとは、どういうことですか？

バージョンが同じなのに integrity（ハッシュ）が違う場合に警告します。再公開やミラーの違い、改ざんの可能性があるため、取得元とあわせて確認してください。

### lockfile は外部に送られますか？

送られません。解析はすべてブラウザの中で行われ、LIBRA Works のサーバーや第三者に送信されることはありません。
