導入
現代のフロントエンド開発において、node_modulesの肥大化は頭の痛い問題です。npmやyarnを使用していると、プロジェクトごとに膨大なパッケージが重複して保存され、ディスク容量を圧迫します。そこで注目すべきがpnpmです。pnpmは「コンテンツアドレッサブルストレージ」という仕組みを採用しており、すべてのプロジェクトでパッケージを共有します。本記事では、この共有の実体がある「pnpm store path」を確認し、適切に管理する方法を解説します。
基礎知識
pnpmは、インストールされたパッケージを一度だけ「グローバルストア」に保存します。プロジェクト内のnode_modulesには、このストアへの「ハードリンク」が作成されます。
pnpm store pathは、その共有ストアがディスク上のどこに存在するかを表示するコマンドです。この仕組みにより、同じライブラリの同じバージョンを複数のプロジェクトで使い回せるため、ディスク容量の大幅な節約が可能になります。
実装/解決策
ストアの場所を特定し、ディスクを整理する手順は以下の通りです。
1. ストアの場所を確認する
コマンドラインで「pnpm store path」を実行します。これにより、OSごとの規定のパスが出力されます。
2. 不要なパッケージを削除する
長期間開発を行っていると、古いバージョンがストアに残り続け、ディスクを圧迫します。その場合は「pnpm store prune」を実行します。これは、どのプロジェクトからも参照されていない「孤立したパッケージ」を自動的に削除し、ストアをクリーンに保つコマンドです。
サンプルプログラム
以下のコマンドは、実際の開発現場でキャッシュの健全性を保つために定期的に実行すべき一連の流れです。
1. 現在のストアの場所を確認する 戻り値として、ディスク上の絶対パスが返されます pnpm store path 2. ストア内の不要なパッケージを削除する(定期実行推奨) どのプロジェクトからも参照されていない古いキャッシュを掃除します pnpm store prune 3. キャッシュの整合性が怪しい場合にストアを再構築する もしビルドエラーが多発する場合は、一度ストアを空にして再インストールします 注意: rm -rf を使う場合は必ずストアのパスを確認してから実行してください rm -rf $(pnpm store path) pnpm install
応用・注意点
注意点:ストアの削除は慎重に
「pnpm store prune」は安全ですが、手動でストアディレクトリを直接削除(rm -rf)した場合は、インストール済みの全プロジェクトで再度「pnpm install」が必要になります。
応用:CI/CD環境での活用
GitHub ActionsなどのCI環境では、毎回クリーンインストールすると時間がかかります。pnpmのキャッシュディレクトリをアクション側でキャッシュ設定(actions/cache)しておくことで、pnpm storeの特性を活かした高速なビルドが可能になります。大規模なモノレポ運用をしているチームは、ぜひこの「ストアの場所」を意識したキャッシュ戦略を導入してみてください。

コメント