Guide di Levo · Sviluppatori: tutto il resto

Come trovare ed eliminare le cartelle node_modules su tutto il Mac

Ogni cartella node_modules si può eliminare. npm install, pnpm install o yarn la ricostruisce dal lockfile. L’unica domanda è quali valgano il tempo della reinstallazione, e la risposta di solito sono i progetti che non apri da un mese.

L’elenco Ready to free di Levo con le cartelle node_modules e le cache dei pacchetti, ciascuna con dimensione e motivo
CosaDoveSi può eliminare?
Dipendenze del progetto<project>/node_modulesSì, install la ricostruisce
Copie annidatenode_modules/*/node_modulesLasciale, se ne vanno con la cartella principale
Pacchetti collegatiSymlink creati da npm linkElimina il collegamento, non l’origine a cui punta
Pacchetti globali/opt/homebrew/lib/node_modules o la lib della tua versione di NodeNo, sono strumenti che hai installato apposta

Perché ce ne sono così tante

Ogni progetto JavaScript tiene la propria copia di ogni dipendenza, e la maggior parte tiene anche le dipendenze delle sue dipendenze. Una piccola app React pesa facilmente 300 MB. Un monorepo può superare i 2 GB. Qualche anno di progetti personali, tutorial e repository clonati si somma in decine di gigabyte a cui non pensi mai, perché le cartelle stanno dentro progetti che apri solo ogni tanto.

Come farlo da solo

Trovarle tutte

Apri il Terminale ed elenca ogni cartella node_modules nella tua cartella home, con le più grandi in fondo. -prune impedisce a find di entrare in ciascuna, ed è ciò che lo tiene veloce.

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

L’elenco mostra la dimensione e il percorso. Tutto ciò che sta sotto ~/Library viene saltato di proposito: app come editor e strumenti Electron tengono lì le proprie copie, e non spetta a te rimuoverle. Lo stesso vale per le cartelle dentro il pacchetto di un’app.

Eliminare la cartella di un progetto

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

È definitivo: rm non usa il Cestino. Controlla il percorso prima di premere invio. Se preferisci poter annullare, trascina invece la cartella nel Cestino dal Finder, anche se il Finder può impiegare molto tempo a spostare una cartella con 50.000 piccoli file.

Eliminarne molte insieme con npkill

npkill analizza una cartella, elenca ogni node_modules con la sua dimensione e la data dell’ultima modifica, e ti lascia eliminare con i tasti freccia e la barra spaziatrice. Non devi nemmeno installarlo.

cd ~/Developer
npx npkill

Ordina per dimensione o per ultima modifica e scorri l’elenco dall’alto. La colonna dell’ultima modifica è quella utile: una cartella non toccata da un anno è una scommessa sicura.

Quali progetti saltare

Con pnpm, node_modules è soprattutto un insieme di collegamenti a un unico archivio condiviso, quindi eliminare le cartelle dei progetti libera meno di quanto suggerisca du. I file vengono liberati solo quando nulla punta più a loro, e anche allora solo dopo pnpm store prune. Vedi come svuotare le cache di npm, pnpm, Yarn e Bun.

Vale la pena guardare anche questo

Accanto a node_modules, i progetti lasciano l’output delle build: .next, .nuxt, dist, .turbo, .parcel-cache. Vengono ricostruiti dalla build successiva, ma prima di rimuovere dist controlla che non sia nel commit di git, perché alcuni progetti lo pubblicano apposta. Anche i progetti Python lasciano le loro cartelle pesanti, trattate in come trovare ed eliminare i vecchi ambienti virtuali Python.

Come fa Levo

Levo tiene un indice aggiornato di ciò che riempie il tuo disco, quindi sa già dove si trova ogni node_modules e quanto è grande. Compaiono in Ready to free sotto le dipendenze dei progetti, ciascuna con dimensione e motivo, accanto alle cache dei pacchetti.

A giudicare è il tuo agente AI. Legge ogni progetto e decide se è inattivo, e Levo seleziona una cartella solo quando al suo interno non è in esecuzione nulla: nessun server di sviluppo, nessun file aperto, nessuna sessione di un agente di coding. Un progetto che hai toccato stamattina resta deselezionato. L’agente può solo leggere. A eliminare ci pensa Levo, che ricontrolla ogni cartella subito prima di rimuoverla.

Scegli un livello di pulizia, usa Select › Smartly, deseleziona ciò che vuoi tenere e premi Clean up. Con Move to Trash attivo puoi rimettere a posto una cartella (Put back). La configurazione è descritta in Levo per sviluppatori web. Monitoraggio e suggerimenti sono gratuiti, come due pulizie; poi c’è la licenza a vita.

Domande frequenti

Quanto spazio occupa node_modules?

Dipende dal progetto. Una piccola app pesa spesso da 200 a 400 MB e un grande monorepo può superare i 2 GB. Su qualche anno di progetti, la maggior parte degli sviluppatori trova da 10 a 50 GB sparsi in decine di cartelle.

Eliminare node_modules rovina il mio progetto?

No. La cartella viene ricostruita dal lockfile la prossima volta che esegui npm install, pnpm install o yarn. I file sorgente del progetto non vengono toccati. Le eccezioni sono i file modificati a mano dentro la cartella e i pacchetti ritirati da npm.

È sicuro eliminare node_modules mentre un server di sviluppo è in esecuzione?

No. Il server può andare in crash o servire pagine rotte, e un file watcher può fallire a metà dell’eliminazione. Ferma prima il server.

Perché rm -rf node_modules è così lento?

Una sola cartella può contenere da 50.000 a 200.000 piccoli file, e ognuno va rimosso separatamente. È più lento su un disco quasi pieno. Eliminare dal Terminale è molto più veloce che spostare la cartella nel Cestino dal Finder.

Devo eliminare anche il lockfile?

No. Tieni package-lock.json, pnpm-lock.yaml o yarn.lock. È il registro che permette alla reinstallazione di darti le stesse versioni.