JavaScript プロジェクト
古い node_modules フォルダを削除する方法
node_modules はプロジェクトの package.json とロックファイルから入れ直せるので、今は触っていないプロジェクトなら削除してもたいてい問題ありません。その前に、ロックファイルがあること、パッチを当てたパッケージや非公開のパッケージに頼っていないことを確認してください。作業はプロジェクトごとに進めます。
大きなフォルダを見つける
まずは一覧を作り、まだ何も削除しないでください。ターミナルで 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 フォルダをゴミ箱に移します。
- 次に使うときに、npm install などプロジェクトのインストールコマンドを実行します。
- ビルドとテストが通ることを確かめてから、ゴミ箱を空にします。
Mint でできること
Mint は ~/github、~/Projects、~/Developer などのよくあるコード用フォルダから 10 MB を超える node_modules を探し、それぞれにロックファイルがあるか確認します。ロックファイルがあれば、npm install のような復元用のコマンドが行に表示され、「再構築可能」に入ります。なければ「整理候補」に入り、復元できない可能性があると表示されます。
削除したあとはプロジェクトを入れ直すまで動かないので、これらの行には最初からチェックが入っていません。消すものを自分で選び、「ゴミ箱に移動」か「完全に削除」を選んでください。App Store 版の Mint が見られるのは、アクセスを許可したフォルダの中だけです。
よくある質問
node_modules はすべて削除してもいいですか?
おすすめしません。開発中のプロジェクトには必要ですし、古いプロジェクトが使っているパッケージはもうダウンロードできないこともあります。
node_modules を削除するとソースコードも消えますか?
node_modules フォルダだけを削除するなら消えません。特にターミナルでは、入力ミスひとつでプロジェクト全体に及ぶことがあるので、パスをよく確認してください。
ロックファイルがないプロジェクトはどうすればいいですか?
入れ直すとパッケージのバージョンが変わる可能性があります。今と同じようにビルドする必要があるなら、フォルダは残しておきましょう。
忘れていた node_modules を見つけましょう
Mint でスキャンし、削除する前にどのプロジェクトにロックファイルがあるか確認してください。