Levo ガイド · 開発者向け: その他

Mac 全体の node_modules フォルダを見つけて削除する方法

node_modules フォルダはどれも削除できます。npm install、pnpm install、yarn でロックファイルから再構築されます。問題は、どれが再インストールの時間をかける価値があるかだけで、たいていは 1 か月開いていないプロジェクトです。

node_modules フォルダとパッケージのキャッシュが、それぞれサイズと理由つきで並ぶ Levo の Ready to free リスト
対象場所削除しても安全?
プロジェクトの依存関係<project>/node_modulesはい。install で再構築されます
入れ子のコピーnode_modules/*/node_modulesそのままにします。親と一緒に消えます
リンクされたパッケージnpm link が作るシンボリックリンクリンクを削除します。リンク先の元は削除しないでください
グローバルパッケージ/opt/homebrew/lib/node_modules、または Node バージョンの libいいえ。自分の意思でインストールしたツールです

こんなに多い理由

JavaScript のプロジェクトはそれぞれ、すべての依存関係を自分のコピーとして持ち、その依存関係の依存関係まで持つものがほとんどです。小さな React アプリでも 300 MB は簡単に超えます。モノレポなら 2 GB を超えることもあります。何年分もの個人開発、チュートリアル、クローンしたリポジトリで、気にも留めない数十 GB になります。たまにしか開かないプロジェクトの中にあるからです。

自分でやる方法

すべて見つける

ターミナルを開き、ホームフォルダ配下のすべての node_modules フォルダを、大きいものが最後になるよう一覧表示します。-prune により find が各フォルダの中に入り込まないので、高速です。

find ~ -name node_modules -type d -prune -not -path "*/Library/*" -exec du -sh {} + 2>/dev/null | sort -h | tail -30

一覧にはサイズとパスが表示されます。~/Library 配下は意図的に除外しています。エディタや Electron ツールなどのアプリが独自のコピーを置いていて、あなたが削除するものではないからです。アプリバンドル内のフォルダも同様です。

1 つのプロジェクトのフォルダを削除する

cd ~/Developer/old-project
rm -rf node_modules

これは元に戻せません。rm はゴミ箱を使いません。Return キーを押す前にパスを確認してください。元に戻せるようにしたいなら、代わりに Finder でフォルダをゴミ箱へドラッグしてください。ただし、小さなファイルが 5 万個入ったフォルダの移動には、Finder は長い時間がかかることがあります。

npkill で一度にたくさん削除する

npkill はフォルダをスキャンし、すべての node_modules をサイズと最終更新日つきで一覧にして、矢印キーとスペースキーで削除できます。インストールする必要はありません。

cd ~/Developer
npx npkill

サイズ順または最終更新順に並べ替えて、上から順に進めます。便利なのは最終更新の列で、1 年触っていないフォルダは安心して削除できます。

スキップするプロジェクト

pnpm では node_modules の大半が共有ストアへのリンクなので、プロジェクトのフォルダを削除しても、du が示すほどは空きません。ファイルが解放されるのは、どこからもリンクされなくなったときだけで、それも pnpm store prune のあとです。npm、pnpm、Yarn、Bun のキャッシュを削除する方法 を参照してください。

あわせて確認したいもの

node_modules のほかに、プロジェクトはビルド成果物も残します。.next、.nuxt、dist、.turbo、.parcel-cache です。次のビルドで再生成されますが、プロジェクトによっては意図的に含めているので、削除する前に dist が git にコミットされていないか確認してください。Python のプロジェクトも重いフォルダを残します。古い Python 仮想環境を見つけて削除する方法 で説明しています。

Levo ならこうします

Levo はディスクを埋めているものの最新インデックスを保っているので、すべての node_modules の場所とサイズをすでに把握しています。Ready to free のプロジェクトの依存関係の下に、パッケージのキャッシュと並んで、サイズと理由つきで表示されます。

判断するのは、あなた自身の AI エージェントです。各プロジェクトを読み、使われていないかどうかを判断し、Levo はフォルダの中で何も動いていないときだけチェックを入れます。開発サーバー、開いているファイル、コーディングエージェントのセッションがない場合です。今朝触ったプロジェクトはチェックされません。エージェントは読み取りしかできません。削除は Levo 自身が行い、消す直前に各フォルダをもう一度確認します。

クリーンアップレベルを選び、Select › Smartly を選んで、残したいものはチェックを外し、Clean up を押します。Move to Trash をオンにしておけば、フォルダを元に戻せます。設定方法は Web 開発者向けの Levo で説明しています。監視と提案は無料で、2回まで無料でクリーンアップでき、その後は買い切りのライセンスです。

よくある質問

node_modules はどれくらい容量を使いますか?

プロジェクト次第です。小さなアプリなら 200〜400 MB のことが多く、大きなモノレポは 2 GB を超えることもあります。何年分ものプロジェクト全体では、ほとんどの開発者が数十個のフォルダに散らばる 10〜50 GB を見つけます。

node_modules を削除するとプロジェクトが壊れますか?

いいえ。次に npm install、pnpm install、yarn を実行すると、ロックファイルからフォルダが再構築されます。プロジェクトのソースファイルには触れません。例外は、フォルダ内で手作業で編集したファイルと、npm から取り下げられたパッケージです。

開発サーバーの実行中に node_modules を削除しても安全ですか?

やめてください。サーバーがクラッシュしたり壊れたページを返したりすることがあり、ファイルウォッチャーが削除の途中で失敗することもあります。先にサーバーを停止してください。

rm -rf node_modules はなぜこんなに遅いのですか?

1 つのフォルダに 5 万〜20 万個の小さなファイルが入っていることがあり、1 つずつ削除する必要があります。ほぼいっぱいのディスクではさらに遅くなります。ターミナルから削除するほうが、Finder でゴミ箱へ移すよりずっと速いです。

ロックファイルも削除する必要がありますか?

いいえ。package-lock.json、pnpm-lock.yaml、yarn.lock は残してください。再インストールで同じバージョンが入るための記録です。