¿node_modules se come tu disco? Encuéntralos y bórralos en Mac
Las carpetas node_modules se pueden borrar sin riesgo en cualquier proyecto en el que no estés trabajando ahora mismo. Contienen solo dependencias descargadas, y el comando de instalación las vuelve a crear. Un solo comando de Terminal lista por tamaño todas las que hay en tu carpeta de proyectos, para que veas cuáles merece la pena eliminar.
Los gestores de paquetes también guardan cachés de descargas fuera de tus proyectos. Esas también se pueden vaciar, con el comando propio de cada herramienta.
Por qué node_modules ocupa tanto espacio
Con npm y Yarn, cada proyecto recibe su propia copia completa de todas las dependencias, y de todo lo que esas dependencias necesitan. Una app web pequeña puede arrastrar un árbol de paquetes muy grande. Diez proyectos antiguos son diez copias independientes.
Además, las carpetas están formadas por una cantidad enorme de archivos pequeños, y por eso son lentas de copiar, lentas de incluir en una copia de seguridad y lentas de indexar. Nada de lo que contienen es tuyo. La lista de lo que hay que instalar está en package.json y en el lockfile, y eso es lo que conservas.
Lista todas las carpetas node_modules por tamaño
El comando de abajo busca directorios node_modules en una carpeta, mide cada uno y ordena la lista con los más grandes al final. Solo lee. Sustituye ~/Projects por la carpeta donde guardas tu código.
Apúntalo a tu carpeta de código, no a toda tu carpeta de inicio. Las apps y los editores tienen carpetas node_modules propias dentro de ~/Library y dentro de los paquetes de las aplicaciones, y esas forman parte de la app, no son restos. Borrarlas estropea la app.
find ~/Projects -type d -name node_modules -prune -exec du -sh {} + 2>/dev/null | sort -hDecide cuáles borrar
Borrar node_modules solo te cuesta el tiempo de la siguiente instalación, así que la pregunta es qué proyectos vas a abrir pronto.
- Proyectos que no has tocado en meses: bórrala. Aquí es donde está la mayor parte del espacio.
- Repositorios clonados que solo leíste o probaste una vez: bórrala.
- Proyectos en los que estás trabajando esta semana: déjala. Solo conseguirías tener que reinstalar enseguida.
- Proyectos sin lockfile: piénsalo antes. Una instalación desde cero puede resolver algunos paquetes a versiones más nuevas que las que tenías, lo que puede cambiar el comportamiento.
- Proyectos que dependen de un registro privado o de paquetes que puede que ya no estén publicados: asegúrate de que todavía puedes instalar antes de borrar.
Bórralas de forma segura
Detén antes cualquier servidor de desarrollo o compilación que esté en marcha en el proyecto. Después, en el Finder, abre la carpeta del proyecto y traslada node_modules a la Papelera. Es la forma que perdona errores: si la reinstalación falla, puedes devolver la carpeta a su sitio antes de vaciar la Papelera.
Cuando vuelvas al proyecto, ejecuta el comando de instalación del gestor de paquetes que use, que abajo se muestra para npm. Si el proyecto tiene un package-lock.json, npm ci instala exactamente las versiones registradas en él.
El resto del resultado de compilación de esos mismos proyectos puede seguir el mismo camino: carpetas como .next, dist, build y .turbo se vuelven a crear en la siguiente compilación.
npm installVacía las cachés de los gestores de paquetes
Fuera de tus proyectos, cada gestor de paquetes guarda una caché de todo lo que ha descargado, para que las instalaciones repetidas sean rápidas. Estas cachés solo crecen. Los comandos de abajo son las formas documentadas de vaciarlas, y cada uno borra únicamente la caché de descargas de esa herramienta. Tus proyectos siguen funcionando, y la siguiente instalación descarga de nuevo.
- npm guarda su caché en ~/.npm. npm pide --force porque considera que la caché se repara sola. Para comprobarla sin vaciarla, ejecuta npm cache verify.
- Yarn 1 guarda una caché global, y yarn cache clean la vacía. En las versiones más nuevas de Yarn, ejecútalo dentro de un proyecto.
- pnpm guarda un almacén compartido. pnpm store prune elimina solo los paquetes a los que ya no hace referencia ningún proyecto de tu Mac.
- Bun guarda una caché global, y bun pm cache rm la vacía.
npm cache clean --force
yarn cache clean
pnpm store prune
bun pm cache rmUsa menos espacio desde el principio
pnpm guarda cada versión de un paquete una sola vez en el disco y la enlaza en cada proyecto que la usa, así que diez proyectos con las mismas dependencias ocupan poco más que uno. Si node_modules es un problema recurrente, pasar los proyectos nuevos a pnpm es la solución duradera.
Un efecto secundario es que los tamaños parecen incorrectos. Una herramienta que suma tamaños de archivo cuenta un paquete enlazado una vez por proyecto, así que una carpeta node_modules de pnpm puede parecer mucho más grande que el espacio que usa en realidad.
También ayuda tener el código fuera de las carpetas sincronizadas. Una carpeta node_modules dentro de iCloud Drive o Dropbox supone subir una cantidad enorme de archivos pequeños sin ningún beneficio.
Cómo trata Diskzy node_modules
La pestaña Clean up (Limpieza) de Diskzy encuentra las carpetas de compilación de proyectos, incluidas node_modules, .build, Pods y los entornos virtuales, estén donde estén en el disco. Una carpeta se deja sin marcar si su proyecto ha cambiado en los últimos 14 días, así que los proyectos en los que estás trabajando no se tocan salvo que los elijas tú.
Las cachés de npm, Yarn, pnpm y Bun aparecen en la lista y marcadas. Todo lo que se elimina va a la Papelera, así que una carpeta se puede devolver a su sitio hasta que la vacías.
Preguntas frecuentes
- ¿Es seguro borrar node_modules?
- Sí, dentro de tus propios proyectos. Contiene solo dependencias descargadas, y npm install, yarn install o pnpm install la vuelve a crear. No borres las carpetas node_modules que hay dentro de apps o dentro de ~/Library.
- ¿Cómo encuentro todas las carpetas node_modules de mi Mac?
- Ejecuta find con -name node_modules y -prune sobre la carpeta donde guardas tu código, y pasa cada resultado a du -sh para ver su tamaño. El comando completo está en esta guía.
- ¿Borrar node_modules estropeará mi proyecto?
- No. El proyecto no funcionará hasta que instales de nuevo, y después funciona como antes. Con un lockfile se instalan las mismas versiones.
- ¿Es seguro vaciar la caché de npm?
- Sí. La caché es una copia local de los paquetes que npm ya ha descargado. En la siguiente instalación, npm obtiene del registro lo que falte.
- ¿Por qué mi carpeta node_modules es más grande que todo mi proyecto?
- Porque contiene todas las dependencias y todo aquello de lo que dependen esas dependencias. Tu propio código suele ser una pequeña fracción del total.
Guías relacionadas
- node_modules<project>/node_modules
- npm cache~/.npm/_cacache
- pnpm store~/Library/pnpm/store
- Yarn cache~/Library/Caches/Yarn
- Playwright browsers~/Library/Caches/ms-playwright
Guías de desinstalación
Descubre adónde se fue el espacio de tu Mac
Diskzy hace un mapa de tu disco, explica los Datos del sistema y limpia lo que es seguro. Gratis durante 72 horas, después $9 una sola vez para 2 Mac.
Prueba Diskzy gratis