Logo de PruneoPruneo

Cómo limpiar node_modules y la caché de npm, pnpm y yarn en Mac

En resumen

Lo que más espacio devuelve suele ser limpiar node_modules de proyectos que ya no abres: bórralos y vuelve a instalar cuando necesites el proyecto. Las cachés de los gestores de paquetes se limpian con npm cache clean --force, pnpm store prune y yarn cache clean, a cambio de instalaciones más lentas. Revisa también las versiones viejas de Node en nvm o fnm.

Los proyectos de JavaScript ocupan espacio en dos sitios: la carpeta node_modules de cada proyecto y la caché global de tu gestor de paquetes. Además, los gestores de versiones como nvm y fnm guardan cada versión de Node que instalaste alguna vez. Nada de esto es peligroso de limpiar si sabes qué es cada cosa. Esta guía va en orden, de lo más grande y seguro a lo más concreto.

Paso 1: encuentra los node_modules viejos

Cada proyecto tiene su propio node_modules, y los proyectos que dejaste de usar lo conservan para siempre. Suele ser lo que más ocupa y lo más fácil de recuperar, porque cualquier proyecto lo reconstruye a partir de package.json y del archivo de bloqueo.

Mide primero

Ejecuta find solo dentro de la carpeta donde guardas tu código (aquí ~/code, cámbiala por la tuya). Este comando solo lee:

find ~/code -name node_modules -type d -prune -exec du -sh {} + 2>/dev/null | sort -h

-prune evita que find entre en cada node_modules, así que solo lista la carpeta principal de cada proyecto y termina mucho antes.

Para ver solo los proyectos cuyo node_modules no ha cambiado en 90 días:

find ~/code -name node_modules -type d -prune -mtime +90 2>/dev/null

Limita la búsqueda a tu carpeta de código. No la lances desde / ni desde toda tu carpeta de usuario para borrar lo que salga: algunas apps y herramientas globales tienen su propio node_modules, y las versiones de Node de nvm viven en ~/.nvm.

Borra los que no necesitas

rm -rf ~/code/proyecto-viejo/node_modules

Alternativa: npkill

Si prefieres una lista visual, npkill muestra cada node_modules por debajo de la carpeta donde lo ejecutas, con su tamaño y su último cambio:

cd ~/code
npx npkill --dry-run

--dry-run solo simula. Sin esa opción, te mueves con las flechas y borras la carpeta elegida con la barra espaciadora. El propio npkill avisa de que algunas aplicaciones necesitan su node_modules para funcionar y las marca con un símbolo de aviso. Ejecútalo desde tu carpeta de código, no desde la raíz del disco.

Paso 2: la caché de npm

npm guarda cada paquete que descarga en una caché de contenido, por defecto en ~/.npm en macOS (los datos están en ~/.npm/_cacache). Puedes comprobar la ruta con:

npm config get cache
du -sh "$(npm config get cache)"

Menor riesgo: verificar

npm cache verify

Según la documentación de npm, este comando elimina datos que ya no hacen falta y comprueba la integridad de la caché. Puedes ejecutarlo cuando quieras.

Vaciar toda la caché

npm explica que su caché se repara sola y que nunca debería hacer falta vaciarla salvo para recuperar espacio en disco. Si quieres ese espacio, clean exige --force:

npm cache clean --force

Paso 3: el almacén de pnpm

pnpm guarda una sola copia de cada versión de paquete en un almacén compartido y la enlaza en tus proyectos. En macOS, por defecto está en ~/Library/pnpm/store, salvo que definas PNPM_HOME o XDG_DATA_HOME (ajustes del almacén de pnpm). Para ver el tuyo:

pnpm store path
du -sh "$(pnpm store path)"

Para borrar los paquetes que ya no usa ningún proyecto:

pnpm store prune

La documentación de pnpm dice que no es dañino ni tiene efectos en tus proyectos, y recomienda ejecutarlo de vez en cuando, pero no muy a menudo. Un paquete que todavía enlaza el node_modules de un proyecto viejo cuenta como usado, así que borra antes los node_modules viejos (paso 1) y luego haz el prune.

Paso 4: la caché de yarn

El comando depende de tu versión de yarn. Ejecuta yarn --version para saberla.

Yarn clásico (1.x)

yarn cache dir

muestra dónde está la caché global (documentación de Yarn clásico). yarn cache list lista los paquetes que contiene.

yarn cache clean

Yarn Berry (2.x y posteriores)

Por defecto, el Yarn moderno guarda la caché en una carpeta global dentro de ~/.yarn/berry (el ajuste enableGlobalCache viene activado). Algunos proyectos usan en su lugar una caché local en .yarn/cache, muchas veces para subirla al repositorio (ajustes de .yarnrc.yml).

yarn cache clean --all

Según la referencia de yarn cache clean, --mirror limpia la caché global y --all limpia la global y la local del proyecto actual. Sin opciones, solo limpia la local.

Paso 5: versiones viejas de Node en nvm o fnm

Cada versión de Node ocupa espacio, y sus paquetes globales van con ella. Los gestores de versiones nunca las borran solos.

nvm

nvm ls
du -sh ~/.nvm/versions/node/* 2>/dev/null

nvm ls lista las versiones instaladas (README de nvm). Para quitar una que no usas:

nvm uninstall 18
nvm cache clear

nvm cache clear borra las descargas de Node guardadas en caché.

fnm

fnm list
fnm uninstall 18

fnm list muestra las versiones instaladas y fnm uninstall quita una (comandos de fnm). Vale el mismo aviso: puedes volver a instalarla con fnm install.

Una rutina sencilla

Una vez al mes, ejecuta el find del paso 1 y borra los node_modules de los proyectos que no tocas desde hace meses; después, pnpm store prune si usas pnpm. Vacía la caché de npm o yarn solo cuando de verdad necesites el espacio. Si también haces apps para Apple o usas contenedores, lee cómo borrar DerivedData de Xcode sin romper nada y Docker prune en Mac. Para el resto del disco, mira cómo liberar espacio en Mac o descarga Pruneo gratis.

Preguntas frecuentes

¿Es seguro borrar node_modules?

Sí, dentro de tus propios proyectos. La carpeta se reconstruye desde package.json y el archivo de bloqueo con npm install, pnpm install o yarn install. No borres carpetas node_modules de apps instaladas o de herramientas globales.

¿Debo ejecutar npm cache clean --force?

Solo para recuperar espacio. npm explica que su caché se repara sola y que no hace falta vaciarla por ningún otro motivo. Prueba antes npm cache verify.

¿pnpm store prune rompe mis proyectos?

No. pnpm indica que solo borra paquetes que ningún proyecto referencia y que no tiene efectos en tus proyectos. Una instalación posterior puede volver a descargar un paquete borrado.

¿Dónde está el almacén de pnpm en Mac?

Por defecto en ~/Library/pnpm/store, salvo que tengas definido PNPM_HOME o XDG_DATA_HOME. Ejecuta pnpm store path para ver la ruta exacta.

Pruébalo con Pruneo

Gratis para macOS 14 o superior. Lo que limpia se puede recuperar desde la cuarentena.

Pruneo es para Mac

Envíate el link y descárgalo en tu Mac. Es gratis y sin cuenta.

Enviármelo por mail
Descargar igual