AskCleanAskClean

プロジェクトを失わずに Mac の node_modules を削除する方法

AskClean チーム · 更新日 2026-08-05

package.json、正しい lockfile、依存パッケージの入手経路が残っていれば、プロジェクトの node_modules は削除できます。まずプロジェクトごとに容量と再構築条件を確認し、使用中のプロセスを止め、該当フォルダだけをゴミ箱へ移してください。その後、同じパッケージマネージャで再インストールし、ビルドとテストが通るまでゴミ箱を空にしません。

依存関係を表すブロック群から一つを回収箱へ移すロボットアームと、透明カバーで守られたブロック、設計図、南京錠
再構築できる依存フォルダだけを取り除き、設計図となるマニフェスト、lockfile、設定、ソースは守ります。

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 内だけの手修正も削除すると失われます。

  1. プロジェクトのルートで pwd を実行し、du -sh ./node_modules と macOS の空き容量を記録します。
  2. package.json、正しい lockfile、ワークスペース設定、未コミットのソースや設定を確認します。古い npm プロジェクトに npm-shrinkwrap.json しかない場合は、npm v12 を使う前に package-lock.json へ改名します。
  3. プライベートレジストリ、Git・file: 依存、ローカルワークスペース、外部ダウンロード、必要なビルドツールへアクセスできることを確かめ、node_modules を使うプロセスを止めます。
  4. そのプロジェクトの node_modules だけをゴミ箱へ移し、リポジトリが指定するパッケージマネージャと、lockfile を変更しない手順でルートから再インストールします。
  5. ビルド、テスト、lint、アプリ起動を確認し、空き容量を再測定してからゴミ箱を空にします。

node_modules を、依存パッケージや手修正の唯一のコピーにしないでください。正確な依存物を取得できず、別の場所にも保存されていなければ、削除によって旧プロジェクトを再構築できなくなることがあります。

一つの依存フォルダだけを可逆的に削除する

確認済みのプロジェクトで node_modules だけを Finder のゴミ箱へ移し、親のリポジトリは選ばないでください。rm -rf ./node_modules はゴミ箱を経由せず取り消せないため、使うなら pwd と対象を再確認します。npm なら lockfile が正しい場合はリポジトリのルートで npm ci、pnpm・Yarn・Bun ならそのリポジトリが指定する、lockfile を変更しない手順で再インストールします。モノレポではルートの lockfile とワークスペース全体を一つの依存システムとして扱います。

ビルド・テスト・起動まで検証する

インストール成功だけでは復旧完了ではありません。プロジェクト所定のビルド、テスト、lint、起動確認を行い、ネイティブアドオンやライフサイクルスクリプトも動くことを確かめます。失敗したらゴミ箱から戻せるうちに復元し、認証、ネットワーク、Node.js とパッケージマネージャの版、ツールチェーン、lockfile の不整合を診断します。AskClean は node_modules をプロジェクト成果物として示し、ソースや Git 履歴を候補から分けます。

削除判断と復旧コスト

大きな node_modules をプロジェクト単位で確認し、ソースと lockfile を守りながら削除して、プロジェクトで使っていたパッケージマネージャで安全に再インストールします。

項目・操作確認する場所削除・操作後の結果
node_modules とプロジェクト本体を分ける<プロジェクト>/node_modulesnode_modules はインストール済みの依存ツリーで、通常は再構築できます。ただし project/node_modules を削除すると、再インストールが終わるまでそのプロジェクトは実行もビルドもできません。package.json、lockfile、ソース、設定、パッチ、ワークスペース定義、Git 履歴は再構築の入力であり、削除対象ではありません。共有ダウンロードを置く ~/.npm も別の領域です。
本当に再構築できるか確認するpackage.json + lockfile + ワークスペース設定lockfile は必要ですが、それだけで完全なバックアップにはなりません。プライベートレジストリの認証、VPN、Git 依存、file: 依存、ローカルワークスペース、Xcode Command Line Tools などのネイティブビルド環境、インストールスクリプトの外部ダウンロードも確認します。npm v12 は npm-shrinkwrap.json を読まないため、同形式のファイルを使う旧プロジェクトは、npm v12 に頼る前に package-lock.json へ改名してください。node_modules 内だけの手修正も削除すると失われます。
一つの依存フォルダだけを可逆的に削除するゴミ箱 / パッケージマネージャで再インストール確認済みのプロジェクトで node_modules だけを Finder のゴミ箱へ移し、親のリポジトリは選ばないでください。rm -rf ./node_modules はゴミ箱を経由せず取り消せないため、使うなら pwd と対象を再確認します。npm なら lockfile が正しい場合はリポジトリのルートで npm ci、pnpm・Yarn・Bun ならそのリポジトリが指定する、lockfile を変更しない手順で再インストールします。モノレポではルートの lockfile とワークスペース全体を一つの依存システムとして扱います。
ビルド・テスト・起動まで検証するビルド + テスト + アプリ起動インストール成功だけでは復旧完了ではありません。プロジェクト所定のビルド、テスト、lint、起動確認を行い、ネイティブアドオンやライフサイクルスクリプトも動くことを確かめます。失敗したらゴミ箱から戻せるうちに復元し、認証、ネットワーク、Node.js とパッケージマネージャの版、ツールチェーン、lockfile の不整合を診断します。AskClean は node_modules をプロジェクト成果物として示し、ソースや Git 履歴を候補から分けます。

よくある質問

Mac で node_modules を削除しても安全ですか?

package.json、正しい lockfile、ワークスペース設定、ソース、必要な依存物へのアクセスが残っている場合は、通常は再構築できます。ただし再インストールが終わるまでプロジェクトは動きません。

package-lock.json も一緒に削除しますか?

削除しません。npm ci が同じ依存解決を再現するための入力です。npm v12 は npm-shrinkwrap.json を読まないため、古いプロジェクトではその同形式ファイルを package-lock.json へ改名してから利用します。

node_modules と npm キャッシュは同じですか?

違います。node_modules は一つのプロジェクトのインストール済み依存ツリーで、npm の共有キャッシュは通常 ~/.npm にあります。一方を削除しても、もう一方は消えません。

参考資料

開発者ストレージの整理を続ける