プロジェクトを失わずに Mac の node_modules を削除する方法
AskClean チーム · 更新日 2026-11-02
package.json、正しい lockfile、依存パッケージの入手経路が残っていれば、プロジェクトの node_modules は削除できます。まずプロジェクトごとに容量と再構築の条件を確認し、使用中のプロセスを止め、該当するフォルダだけをゴミ箱へ移してください。その後、同じパッケージマネージャで再インストールし、ビルドとテストが通るまでゴミ箱を空にしないでください。node_modules と npm の共有ダウンロードキャッシュは、場所も役割も復旧コストも違う別物です。

node_modules とプロジェクト本体を分ける
node_modules はインストール済みの依存ツリーで、通常は再構築できます。ただし project/node_modules を削除すると、再インストールが終わるまでそのプロジェクトは実行もビルドもできません。package.json、lockfile、ソース、設定、パッチ、ワークスペース定義、Git 履歴は再構築の入力であり、削除対象ではありません。共有ダウンロードを置く ~/.npm も別の領域です。
本当に再構築できるか確認する
lockfile は必要ですが、それだけで完全なバックアップにはなりません。プライベートレジストリの認証、VPN、Git 依存、file: 依存、ローカルワークスペース、Xcode Command Line Tools などのネイティブビルド環境、インストールスクリプトが行う外部ダウンロードも確認します。npm v12 は npm-shrinkwrap.json を読まないため、このファイルを使っている古いプロジェクトでは、npm v12 で再インストールする前に package-lock.json へ名前を変更してください(中身の形式は同じです)。node_modules の中で直接加えた修正は、削除すると失われ、package.json や lockfile からは戻りません。
- プロジェクトのルートで pwd を実行し、du -sh ./node_modules と macOS の空き容量を記録します。
- package.json、正しい lockfile、ワークスペース設定、未コミットのソースや設定を確認します。古い npm プロジェクトに npm-shrinkwrap.json しかない場合は、npm v12 を使う前に package-lock.json へ名前を変更します。
- プライベートレジストリ、Git・file: 依存、ローカルワークスペース、外部ダウンロード、必要なビルドツールへアクセスできることを確かめ、node_modules を使うプロセスを止めます。
- そのプロジェクトの node_modules だけをゴミ箱へ移し、リポジトリが指定するパッケージマネージャと、lockfile を変更しない手順でルートから再インストールします。
- ビルド、テスト、lint、アプリ起動を確認し、空き容量を再測定してからゴミ箱を空にします。
node_modules を、依存パッケージや手修正の唯一のコピーにしないでください。正確な依存パッケージを取得できず、別の場所にも保存されていなければ、削除によって旧プロジェクトを再構築できなくなることがあります。
確認したプロジェクトの node_modules だけを安全に削除する
確認済みのプロジェクトで node_modules だけを Finder のゴミ箱へ移し、親のリポジトリは選ばないでください。ターミナルで rm -rf ./node_modules を実行するとゴミ箱を経由せずに削除され、取り消せないため、使うなら pwd と対象を再確認します。npm なら lockfile が正しい場合はリポジトリのルートで npm ci、pnpm・Yarn・Bun ならそのリポジトリが指定する、lockfile を変更しない手順で再インストールします。モノレポではルートの lockfile とワークスペース全体を 1 つの依存システムとして扱います。
ビルド・テスト・起動まで検証する
インストール成功だけでは復旧完了ではありません。プロジェクト所定のビルド、テスト、lint、起動確認を行い、ネイティブアドオンやライフサイクルスクリプトも動くことを確かめます。失敗したらゴミ箱から戻せるうちに復元し、認証、ネットワーク、Node.js とパッケージマネージャのバージョン、ツールチェーン、lockfile の不整合を診断します。AskClean は node_modules をプロジェクト成果物として示し、ソースや Git 履歴を候補から外します。ただし、AskClean で確定したフォルダは、ゴミ箱に移動せず完全に削除されます。復元の猶予が必要なら、Finder で自分でゴミ箱へ移し、再インストールとビルドが通ってから空にしてください。
削除判断と復旧コスト
Mac で大きな node_modules を探し、プロジェクト単位で削除して、npm・pnpm・Yarn・Bun で安全に再インストールする方法を解説します。ソースコード、package.json、lockfile は残し、ビルドとテストで復旧を確かめます。
| 項目・操作 | 確認する場所 | 削除・操作後の結果 |
|---|---|---|
| node_modules とプロジェクト本体を分ける | <プロジェクト>/node_modules | node_modules はインストール済みの依存ツリーで、通常は再構築できます。 |
| 本当に再構築できるか確認する | package.json + lockfile + ワークスペース設定 | lockfile は必要ですが、それだけで完全なバックアップにはなりません。 |
| 確認したプロジェクトの node_modules だけを安全に削除する | ゴミ箱 / パッケージマネージャで再インストール | 確認済みのプロジェクトで node_modules だけを Finder のゴミ箱へ移し、親のリポジトリは選ばないでください。 |
| ビルド・テスト・起動まで検証する | ビルド + テスト + アプリ起動 | インストール成功だけでは復旧完了ではありません。 |
よくある質問
Mac で node_modules を削除しても安全ですか?
package.json、正しい lockfile、ワークスペース設定、ソース、必要な依存パッケージへのアクセスが残っていれば、通常は再構築できます。ただし、再インストールが終わるまでプロジェクトは動きません。確認したフォルダを Finder でゴミ箱へ移し、再インストールとテストが通ってからゴミ箱を空にしてください。
node_modules と一緒に package-lock.json も削除すべきですか?
いいえ。package-lock.json は npm の依存関係の解決結果を記録したファイルで、npm ci が同じ依存ツリーを再現するための入力です。削除すると依存関係が解決し直され、間接的な依存パッケージのバージョンが変わることがあります。npm v12 は npm-shrinkwrap.json を読まないため、古いプロジェクトではこのファイルを package-lock.json へ名前を変更してから使います。
node_modules と npm キャッシュは同じですか?
違います。node_modules は 1 つのプロジェクトのインストール済み依存ツリーで、npm の共有キャッシュは通常 ~/.npm にあります。一方を削除しても、もう一方は消えません。
参考資料