Cómo encontrar y borrar carpetas node_modules antiguas y cachés de paquetes en un Mac
Cada proyecto de JavaScript lleva su propia carpeta node_modules, que suele ocupar de 200 MB a 1 GB, y los gestores de paquetes guardan una segunda copia de todo en sus cachés. Los proyectos que terminaste hace meses lo siguen conservando todo.
En resumen: las carpetas node_modules y las cachés de paquetes se pueden borrar sin riesgo: npm install (o pnpm, yarn, bun) recupera exactamente lo que indica el lockfile. Para cada caché, usa el comando de limpieza de su propio gestor de paquetes.
¿Cómo encuentro todas las carpetas node_modules?
Apúntalo a la carpeta donde tienes tu código. Muestra cada node_modules con su tamaño, con las más grandes al final:
find ~/Projects -type d -name node_modules -prune -exec du -sh {} + 2>/dev/null | sort -h
-prune evita que cuente las carpetas node_modules que hay dentro de otras node_modules. Mueve a la Papelera desde el Finder las de proyectos antiguos, o bórralas con rm -rf (no se puede deshacer).
¿Es seguro borrar node_modules?
Sí. Contiene paquetes descargados, y tu package.json y el lockfile indican cuáles. Ejecutar npm install en el proyecto los restaura. Hay dos excepciones: los paquetes que hayas editado a mano dentro de node_modules (para eso, usa patch-package o el comando de parches de tu gestor de paquetes) y trabajar sin conexión.
¿Qué cachés de paquetes puedo vaciar y cómo?
- npm (
~/.npm/_cacache):npm cache clean --force - pnpm (
~/Library/pnpm/store):pnpm store pruneelimina los paquetes que ningún proyecto usa - Yarn (
~/Library/Caches/Yarn,~/.yarn/berry/cache):yarn cache clean - Bun (
~/.bun/install/cache):bun pm cache rm - Homebrew (
~/Library/Caches/Homebrew):brew cleanup - pip (
~/Library/Caches/pip):pip cache purge; uv (~/.cache/uv):uv cache clean - Go:
go clean -cache -modcache - CocoaPods:
pod cache clean --all; Gradle (~/.gradle/caches), Maven (~/.m2/repository) y Cargo (~/.cargo/registry) pueden ir a la Papelera y se vuelven a descargar - Navegadores de Playwright (
~/Library/Caches/ms-playwright): reinstálalos connpx playwright install
La próxima instalación de cada proyecto vuelve a descargar lo que necesita, así que la primera después de vaciar la caché va más lenta.
¿Y las carpetas de compilación?
Los resultados de compilación también se regeneran: .next, .turbo, dist y build en proyectos de JavaScript, target en Rust y Maven, .build en paquetes de Swift, Pods en proyectos de CocoaPods (pod install los restaura).
¿Qué debería conservar?
- Entornos virtuales de Python (
.venv): uno recreado puede ser distinto, porque los paquetes instalados a mano y las versiones sin fijar no vuelven igual. - La versión de Node.js que usas en nvm o fnm. Las versiones antiguas de
~/.nvm/versions/nodeque ningún proyecto necesita se pueden quitar. - Proyectos con cambios sin confirmar: antes de quitar algo más grande que las dependencias, revisa
git status.