【Node.js】dependency-cruiser 依存関係を可視化する方法
dependency-cruiserは、JavaScript/TypeScriptプロジェクトのモジュール依存関係を解析・可視化するツールです。
dependency-cruiserの概要
- 用途: プロジェクト内のモジュール間依存を解析し、循環依存や不要な依存を検出。
- メリット: アーキテクチャの健全性維持、リファクタリングの指標、CI/CDで自動チェックが可能。
インストール手順
Graphvizのインストール
GraphvizはDOT形式のグラフをSVG等にレンダリングするために必要です。
- Ubuntu例:
1
sudo apt-get install graphviz
dependency-cruiserのインストール
グローバルまたはプロジェクト内にインストール可能。
- グローバルインストール:
1
npm install -g dependency-cruiser
- プロジェクト内インストール:
1
npm install --save-dev dependency-cruiser
設定ファイルの作成
初期設定は以下のコマンドで簡単に作成できます。
|
|
作成された .dependency-cruiser.js
では、doNotFollow
オプションで特定ディレクトリ(例:node_modules
)の内部解析を防ぎ、解析結果のノイズを抑えます。
|
|
依存関係グラフの生成
プロジェクト全体のグラフ生成
以下のコマンドでプロジェクトの依存関係をSVG画像に出力します。
|
|
- 解説:
npx depcruise ./
:カレントディレクトリの依存関係を解析--output-type dot
:Graphviz形式で出力dot -T svg
:SVG画像へ変換
モノレポ対応(各パッケージごとにグラフ生成)
複数パッケージが存在する場合、各フォルダ毎に以下のコマンドで個別グラフを作成します。
|
|
- ポイント: 各パッケージのディレクトリ名がファイル名に反映され、管理しやすい出力結果となります。
ベストプラクティス
- 解析対象の絞り込み:
includeOnly
やexclude
オプションを利用し、ソースコード部分のみ解析することでノイズを減少。 - 外部依存の制限:
doNotFollow
を設定して、node_modules
など不要な内部解析を防止。 - CI/CD連携: GitHub Actionsなどに組み込み、依存ルール違反を自動検出することで品質向上につなげる。