古い node_modules フォルダを削除する方法

node_modules はプロジェクトの package.json とロックファイルから入れ直せるので、今は触っていないプロジェクトなら削除してもたいてい問題ありません。その前に、ロックファイルがあること、パッチを当てたパッケージや非公開のパッケージに頼っていないことを確認してください。作業はプロジェクトごとに進めます。

要点

  • 要するに: node_modules は package.json とロックファイルから入れ直せるので、作業していないプロジェクトのものならたいてい消して大丈夫です。
  • 先に確認: ロックファイルがあり、パッチを当てたパッケージや非公開のパッケージに頼っていないことを確かめ、1 プロジェクトずつ進めます。
  • Mint なら: Mint はよく使うコード用フォルダで大きな node_modules を見つけます。この 7 日間に使ったものは Keep に残り、使われていなくてロックファイルがあるものは、戻すためのコマンド付きで Safe to clean に入ります。

大きなフォルダを見つける

まずは一覧を作り、まだ何も削除しないでください。ターミナルで find ~/Projects -type d -name node_modules -prune -exec du -sh {} + を実行すると、~/Projects 以下にある最上位の node_modules フォルダがサイズ付きで表示されます。開始フォルダは、コードを置いている場所に合わせて変えてください。

探す作業と消す作業は分けておきましょう。find と rm -rf を一行にまとめると、パスが一階層ずれただけで別のものを消してしまいます。

削除する前に確認すること

プロジェクトを開き、package-lock.json、yarn.lock、pnpm-lock.yaml のどれかがあるか確認します。ロックファイルがないと、入れ直したときに以前より新しいバージョンが入り、同じようにビルドできなくなることがあります。

パッチを当てたパッケージ、ローカルでリンクしたパッケージ、あとでアクセスできなくなりそうな非公開レジストリの依存関係にも注意してください。ロックファイルが役に立つのは、中のパッケージがまだダウンロードできる場合だけです。大事なプロジェクトなら、ソースがコミットかバックアップされていることも確かめておきましょう。

同じ node_modules を 11 回消した記録:使っているプロジェクトの見分け方

プロジェクトをひとつずつ片付ける

確認が済んだプロジェクトなら、削除自体はすぐ終わります。

  1. 今は触っていないプロジェクトを選び、ロックファイルがあることを確認します。
  2. そのプロジェクトの node_modules フォルダをゴミ箱に移します。
  3. 次に使うときに、npm install などプロジェクトのインストールコマンドを実行します。
  4. ビルドとテストが通ることを確かめてから、ゴミ箱を空にします。

Mint でできること

Mint は ~/github、~/Projects、~/Developer などのよくあるコード用フォルダから大きな node_modules を探します。まず、そのプロジェクトが使われているかを確かめます。中で動いているプログラムがあるか、この 7 日間にインストールや実行、ファイルの編集があったかを見て、使用中なら Keep(残すもの)に入れ、その理由を行に表示します。

使われていなくてロックファイルがあるものは Safe to clean(安全に片付けられるもの)に入り、最初からチェックが入っています。行には npm install のような戻すためのコマンドが表示されます。入れ直せば戻るので、Clean はそのまま削除します。ロックファイルがないものは Yours(あなたのファイル)に入り、復元できない可能性があると表示され、チェックは入りません。

Mint が消したあとに入れ直された node_modules は、一覧には出てもチェックは入らず、Auto Care も手を付けません。クリックしたときにも Mint がもう一度確認し、その間にプロジェクトが使われていれば、その node_modules は削除しません。App Store 版の Mint が見られるのは、アクセスを許可したフォルダの中だけです。

Safe to clean の仕組み(英語)

よくある質問

node_modules はすべて削除してもいいですか?

おすすめしません。開発中のプロジェクトには必要ですし、古いプロジェクトが使っているパッケージはもうダウンロードできないこともあります。

node_modules を削除するとソースコードも消えますか?

node_modules フォルダだけを削除するなら消えません。特にターミナルでは、入力ミスひとつでプロジェクト全体に及ぶことがあるので、パスをよく確認してください。

ロックファイルがないプロジェクトはどうすればいいですか?

入れ直すとパッケージのバージョンが変わる可能性があります。今と同じようにビルドする必要があるなら、フォルダは残しておきましょう。

忘れていた node_modules を見つけましょう

Mint でスキャンし、削除する前にどのプロジェクトにロックファイルがあるか確認してください。

プロジェクトをスキャン