Guies de Levo · Desenvolupadors: la resta

Com trobar i esborrar les carpetes node_modules de tot el Mac

Totes les carpetes node_modules es poden esborrar. npm install, pnpm install o yarn la reconstrueixen a partir del lockfile. L'única qüestió és quines valen el temps de reinstal·lació, i la resposta sol ser els projectes que fa un mes que no obres.

La llista Ready to free (llest per alliberar) de Levo amb carpetes node_modules i memòries cau de paquets, cadascuna amb una mida i un motiu
QuèOnEs pot esborrar?
Dependències del projecte<project>/node_modulesSí, install la reconstrueix
Còpies niuadesnode_modules/*/node_modulesDeixa-les, se'n van amb la carpeta pare
Paquets enllaçatsEnllaços simbòlics creats per npm linkEsborra l'enllaç, no l'origen al qual apunta
Paquets globals/opt/homebrew/lib/node_modules o el lib de la teva versió de NodeNo, són eines que has instal·lat expressament

Per què n'hi ha tantes

Cada projecte de JavaScript té la seva pròpia còpia de cada dependència, i la majoria també tenen les dependències de les seves dependències. Una app petita de React fa fàcilment 300 MB. Un monorepo pot passar de 2 GB. Uns quants anys de projectes personals, tutorials i repositoris clonats sumen desenes de gigabytes en què mai penses, perquè les carpetes són dins de projectes que només obres de tant en tant.

Com fer-ho tu mateix

Troba-les totes

Obre el Terminal i llista totes les carpetes node_modules de la teva carpeta d'usuari, les més grans al final. El -prune evita que find entri dins de cadascuna, i això és el que el manté ràpid.

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

La llista mostra la mida i la ruta. Tot el que hi ha sota ~/Library s'omet expressament: apps com els editors i les eines d'Electron hi guarden les seves pròpies còpies, i no les has d'eliminar tu. El mateix val per a les carpetes dins del paquet d'una app.

Esborra la carpeta d'un projecte

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

Això és permanent: rm no fa servir la Paperera. Comprova la ruta abans de prémer retorn. Si prefereixes poder desfer-ho, arrossega la carpeta a la Paperera des del Finder, tot i que el Finder pot trigar molt a moure una carpeta amb 50.000 fitxers petits.

Esborra'n moltes alhora amb npkill

npkill escaneja una carpeta, llista cada node_modules amb la seva mida i la data de l'última modificació, i et deixa esborrar amb les fletxes i l'espai. No cal instal·lar-lo.

cd ~/Developer
npx npkill

Ordena per mida o per última modificació i ves baixant per la llista. La columna d'última modificació és la útil: una carpeta que fa un any que no es toca és una aposta segura.

Quins projectes saltar-te

Amb pnpm, node_modules són sobretot enllaços a un únic magatzem compartit, així que esborrar carpetes de projectes allibera menys del que suggereix du. Els fitxers només s'alliberen quan res hi enllaça, i només després de pnpm store prune. Mira com netejar les memòries cau de npm, pnpm, Yarn i Bun.

També val la pena mirar

Al costat de node_modules, els projectes deixen resultats de compilació: .next, .nuxt, dist, .turbo, .parcel-cache. La propera compilació els reconstrueix, però comprova que dist no estigui al repositori de git abans d'eliminar-lo, perquè alguns projectes l'hi tenen expressament. Els projectes de Python també deixen les seves pròpies carpetes pesades, que es tracten a com trobar i esborrar els entorns virtuals antics de Python.

Com ho fa Levo

Levo manté un índex en directe del que omple el teu disc, així que ja sap on és cada node_modules i quant fa. Apareixen a Ready to free (llest per alliberar) sota les dependències de projecte, cadascuna amb una mida i un motiu, al costat de les teves memòries cau de paquets.

El teu propi agent d'IA fa de jutge. Llegeix cada projecte i decideix si està inactiu, i Levo només marca una carpeta quan no hi ha res en marxa a dins: cap servidor de desenvolupament, cap fitxer obert, cap sessió d'agent de programació. Un projecte que has tocat aquest matí queda sense marcar. L'agent només pot llegir. Levo fa l'esborrat ell mateix, i torna a comprovar cada carpeta just abans que se'n vagi.

Tries un nivell de neteja, fas servir Select › Smartly, desmarques el que vols conservar i prems Clean up. Amb Move to Trash activat, pots tornar a posar una carpeta al seu lloc. La configuració es descriu a Levo per a desenvolupadors web. Vigilar i els suggeriments són gratis, i dues neteges també; després hi ha una llicència de per vida.

Preguntes freqüents

Quant d'espai ocupa node_modules?

Depèn del projecte. Una app petita sol fer de 200 a 400 MB i un monorepo gran pot passar de 2 GB. Amb uns quants anys de projectes, la majoria de desenvolupadors en troben de 10 a 50 GB repartits en dotzenes de carpetes.

Esborrar node_modules trencarà el meu projecte?

No. La carpeta es reconstrueix a partir del teu lockfile la propera vegada que executis npm install, pnpm install o yarn. Els fitxers de codi font del projecte no es toquen. Les excepcions són els fitxers editats a mà dins de la carpeta i els paquets que s'han retirat de npm.

És segur esborrar node_modules amb un servidor de desenvolupament en marxa?

No ho facis. El servidor pot petar o servir pàgines trencades, i un vigilant de fitxers pot fallar a mitja esborrada. Atura primer el servidor.

Per què rm -rf node_modules és tan lent?

Una sola carpeta pot tenir de 50.000 a 200.000 fitxers petits, i cadascun s'ha d'eliminar per separat. Va més lent amb el disc gairebé ple. Esborrar des del Terminal és molt més ràpid que moure la carpeta a la Paperera des del Finder.

També he d'esborrar el lockfile?

No. Conserva package-lock.json, pnpm-lock.yaml o yarn.lock. És el registre que fa que la reinstal·lació et doni les mateixes versions.