開発をしていると、プロジェクト内のディレクトリ構造を確認したい場面があります。その際に便利なのが、LinuxやMacで利用できるtreeコマンドです。しかし、JavaScriptやTypeScriptプロジェクトでは、node_modulesフォルダが巨大で見づらくなるため、これを除外してディレクトリ構造を確認したいことがあります。
treeコマンドの基本
treeコマンドは、ディレクトリ構造をツリー形式で表示するツールです。以下のようにインストールできます。
インストール方法
Macの場合
brew install tree
Ubuntuの場合
sudo apt install tree
基本的な使い方
以下のコマンドで、現在のディレクトリ構造を表示できます。
tree
しかし、node_modulesが含まれると、大量の出力になり、肝心のプロジェクト構造が見えにくくなります。そのため、node_modulesを除外する方法が必要です。
node_modulesを除外する方法
方法1: -Iオプションを使う
treeコマンドには、特定のパターンを除外できる-I(大文字のi)オプションがあります。このオプションを使うと、node_modulesフォルダを除外できます。
コマンド例
tree -I 'node_modules'
出力例
.
├── package.json
├── src
│ ├── index.js
│ └── utils.js
└── README.md
2 directories, 4 files
このコマンドでは、node_modulesディレクトリが除外され、シンプルな出力になります。
方法2: grepでフィルタリング
treeコマンドとgrepを組み合わせて、node_modulesを含む行を除外する方法もあります。
コマンド例
tree | grep -v 'node_modules'
この方法は柔軟ですが、-Iオプションに比べてやや手間がかかります。
方法3: エイリアスを設定
毎回オプションを指定するのが面倒な場合は、エイリアスを設定すると便利です。以下のように、~/.zshrcや~/.bashrcファイルにエイリアスを追加できます。
エイリアス例
alias tree="tree -I 'node_modules'"
設定後にターミナルを再起動するか、以下のコマンドで設定を反映させます。
source ~/.zshrc
これにより、単純にtreeと入力するだけでnode_modulesが除外されるようになります。
方法4: .gitignoreを活用
treeコマンドには、.gitignoreを参考にしながらファイルやディレクトリを除外するオプションはありませんが、.gitignoreの内容を利用して動的にtreeコマンドを実行するスクリプトを作成することもできます。
スクリプト例
#!/bin/bash
IGNORE=$(grep -v '^#' .gitignore | tr '\n' '|')
IGNORE=${IGNORE%|}
tree -I "$IGNORE"
このスクリプトを実行すると、.gitignoreのルールを反映して出力をカスタマイズできます。
その他の便利なオプション
ディレクトリを優先的に表示
--dirsfirstオプションを使うと、ディレクトリがファイルよりも先に表示され、構造が把握しやすくなります。
コマンド例
tree --dirsfirst -I 'node_modules'
ディレクトリの深さを制限
大規模なディレクトリでは、-Lオプションを併用して深さを制限することで、見やすい出力を得られます。
コマンド例
tree -L 2 -I 'node_modules'
まとめ
treeコマンドを使えば、ディレクトリ構造を簡単に確認できますが、node_modulesのような不要なフォルダを除外することで、より見やすい出力を得られます。この記事で紹介した方法やオプションを活用し、快適な開発環境を整えましょう。