Mac で古い node_modules フォルダとパッケージキャッシュを見つけて削除する方法
JavaScript のプロジェクトはそれぞれ専用の node_modules を持ち、200 MB〜1 GB になることもよくあります。さらにパッケージマネージャは、そのすべてのコピーをもう 1 つキャッシュに保存しています。何か月も前に終えたプロジェクトも、それを抱えたままです。
結論:node_modules フォルダとパッケージキャッシュは削除しても安全です。npm install(または pnpm、yarn、bun)を実行すれば、ロックファイルに書かれたとおりのものが戻ります。キャッシュは、各パッケージマネージャ自身のクリーンコマンドで消しましょう。
node_modules フォルダをすべて見つけるには?
コードを置いているフォルダを指定して実行します。すべての node_modules がサイズ付きで、大きいものほど下に表示されます。
find ~/Projects -type d -name node_modules -prune -exec du -sh {} + 2>/dev/null | sort -h
-prune を付けると、node_modules の中にある node_modules まで数えずに済みます。古いプロジェクトのものは Finder でゴミ箱に入れるか、rm -rf で削除します(取り消しはできません)。
node_modules は削除しても大丈夫?
はい。中身はダウンロードしたパッケージで、どれが必要かは package.json とロックファイルに書かれています。プロジェクトで npm install を実行すれば元に戻ります。例外は 2 つ。node_modules の中のパッケージを手で書き換えている場合(代わりに patch-package やパッケージマネージャのパッチコマンドを使いましょう)と、オフラインで作業する場合です。
どのパッケージキャッシュを消せる?消し方は?
- npm(
~/.npm/_cacache):npm cache clean --force - pnpm(
~/Library/pnpm/store):pnpm store pruneで、どのプロジェクトも使っていないパッケージを削除 - Yarn(
~/Library/Caches/Yarn、~/.yarn/berry/cache):yarn cache clean - Bun(
~/.bun/install/cache):bun pm cache rm - Homebrew(
~/Library/Caches/Homebrew):brew cleanup - pip(
~/Library/Caches/pip):pip cache purge、uv(~/.cache/uv):uv cache clean - Go:
go clean -cache -modcache - CocoaPods:
pod cache clean --all。Gradle(~/.gradle/caches)、Maven(~/.m2/repository)、Cargo(~/.cargo/registry)はゴミ箱に入れても、また自動でダウンロードされます - Playwright のブラウザ(
~/Library/Caches/ms-playwright):npx playwright installで再インストール
各プロジェクトの次のインストールで必要なものがまたダウンロードされるので、削除したあとの最初の 1 回は遅くなります。
ビルドフォルダも削除していい?
ビルド結果も自動で作り直されます。JavaScript プロジェクトの .next、.turbo、dist、build、Rust と Maven の target、Swift パッケージの .build、CocoaPods プロジェクトの Pods(pod install で戻ります)などです。
残しておくべきものは?
- Python の仮想環境(
.venv):手動でインストールしたパッケージや、バージョンを固定していないパッケージは同じ状態では戻らないため、作り直した環境が元と違ってしまうことがあります。 - nvm や fnm で今使っている Node.js のバージョン。
~/.nvm/versions/nodeにある古いバージョンで、どのプロジェクトも必要としないものは削除して構いません。 - 未コミットの変更があるプロジェクト:依存パッケージより大きなものを削除する前に、
git statusを確認しましょう。