# node_modules por todas partes: cómo encontrarlas, limpiarlas y recuperarlas

> Encuentra todas las carpetas node_modules de tu Mac con su tamaño, borra las que no necesitas, reinstala desde el lockfile y vacía las cachés de paquetes.

- URL: https://moreroom.app/es/learn/node-modules-cleanup
- Published: 2026-10-17
- Updated: 2026-10-17
- Publisher: MoreRoom (Yando Pte. Ltd.) — https://moreroom.app

## TL;DR

- Borrar node_modules es seguro siempre que conserves package.json y el lockfile; npm ci o pnpm install recuperan exactamente las mismas versiones.
- find con -prune muestra todas las carpetas node_modules de tu carpeta de inicio con su tamaño, sin entrar en las anidadas.
- npx npkill te permite recorrer las carpetas node_modules y borrarlas de forma interactiva, pero las borra al momento, sin pasar por la Papelera.
- Con pnpm, los archivos de node_modules son clones o enlaces físicos de un almacén compartido, así que borrarlos libera poco hasta que ejecutas pnpm store prune.
- Las carpetas de compilación como .next, .turbo, .nuxt, .svelte-kit y .parcel-cache se regeneran solas y también se pueden eliminar sin riesgo.

Una carpeta [node_modules](https://moreroom.app/glossary#node-modules) contiene las dependencias instaladas para un proyecto de JavaScript o TypeScript, y una típica ocupa unos cientos de megabytes. Con decenas de proyectos antiguos, suman fácilmente decenas de gigabytes. **Se pueden borrar sin riesgo siempre que conserves `package.json` y el lockfile**: tu gestor de paquetes reinstala las mismas versiones cuando vuelves al proyecto.

## Encuentra todas las carpetas node_modules y su tamaño

Este comando busca en tu carpeta de inicio, omite `~/Library` y la Papelera, y muestra cada carpeta `node_modules` con su tamaño, con las más grandes al final:

```sh
find ~ \( -path "$HOME/Library" -o -path "$HOME/.Trash" \) -prune -o -type d -name node_modules -prune -print0 2>/dev/null | xargs -0 du -sh 2>/dev/null | sort -h
```

Cómo funciona: el primer `-prune` omite las dos carpetas excluidas, `-type d -name node_modules` localiza las carpetas y el segundo `-prune` impide que `find` entre en ellas, de modo que las `node_modules` anidadas se cuentan una sola vez, dentro de su carpeta superior. `du -sh` mide cada una y `sort -h` ordena la lista. Solo lee. En una carpeta de inicio grande puede tardar unos minutos, y puede que Terminal pida acceso a Documentos, Escritorio o Descargas.

Ignora los resultados que estén dentro de carpetas de herramientas como `~/.nvm`, `~/.vscode` o `~/.cursor`. Pertenecen a herramientas instaladas y extensiones de editores, no a tus proyectos.

Si tus proyectos usan pnpm, los tamaños que aparecen son mayores que lo que recuperarías. Más abajo se explica por qué.

## Borra las que no necesitas

Antes de borrar, abre la carpeta del proyecto y comprueba que tiene un lockfile: `package-lock.json` (npm), `pnpm-lock.yaml` (pnpm), `yarn.lock` (Yarn) o `bun.lock` / `bun.lockb` (Bun). Consérvalo, y conserva también `package.json`.

La forma más segura de borrar es arrastrar `node_modules` a la Papelera en el Finder. Puedes cambiar de opinión hasta que vacíes la Papelera. Con muchos archivos pequeños, trasladarlos a la Papelera lleva un momento.

Desde Terminal, dentro de la carpeta de un proyecto:

```sh
cd ~/Projects/old-app
rm -rf node_modules
```

`rm -rf` borra definitivamente, sin pasar por la Papelera. Comprueba antes en qué carpeta estás con `pwd`, y no lo ejecutes nunca con un comodín ni con una variable vacía.

### npkill: una alternativa interactiva

[npkill](https://github.com/voidcosmos/npkill) muestra las carpetas `node_modules` con su tamaño y te permite borrarlas de una en una con una sola tecla:

```sh
npx npkill -d ~/Projects
```

`-d` indica dónde empieza la búsqueda; sin esta opción, npkill empieza en la carpeta actual. Muévete con las flechas y pulsa Espacio o Supr para borrar la carpeta seleccionada. npkill borra al momento, sin pasar por la Papelera. Marca con ⚠️ las carpetas que necesitan las apps para funcionar, que conviene dejar en paz. `--dry-run` simula el borrado si quieres probarlo antes.

## Reinstala cuando vuelvas a un proyecto

Usa el comando que instala exactamente lo que indica el lockfile:

| Gestor de paquetes | Lockfile | Reinstalar |
|---|---|---|
| npm | `package-lock.json` | `npm ci` |
| pnpm | `pnpm-lock.yaml` | `pnpm install --frozen-lockfile` |
| Yarn (Berry) | `yarn.lock` | `yarn install --immutable` |
| Yarn Classic | `yarn.lock` | `yarn install --frozen-lockfile` |
| Bun | `bun.lock` | `bun install --frozen-lockfile` |

[`npm ci`](https://docs.npmjs.com/cli/v11/commands/npm-ci) exige un lockfile, elimina antes cualquier `node_modules` existente y nunca modifica `package.json` ni el lockfile. Un `npm install` normal también funciona, pero puede actualizar el lockfile.

## Otras carpetas que se regeneran solas

Los frameworks y las herramientas de compilación guardan cachés y resultados junto a `node_modules`. Se pueden borrar sin riesgo en los proyectos que no estás ejecutando; la siguiente compilación o el servidor de desarrollo los vuelven a crear.

| Carpeta | La crea |
|---|---|
| `.next` | Next.js |
| `.nuxt` | Nuxt |
| `.svelte-kit` | SvelteKit |
| `.turbo` | Turborepo |
| `.parcel-cache` | Parcel |
| `.angular` | Angular CLI |

`dist` y `build` también suelen ser resultados de compilación, pero son nombres genéricos. Algunos proyectos guardan ahí archivos versionados o los usan para otra cosa, así que mira dentro antes de borrar.

Para ver las cachés de frameworks de una carpeta de proyectos:

```sh
find ~/Projects -type d \( -name .next -o -name .nuxt -o -name .svelte-kit -o -name .turbo -o -name .parcel-cache \) -prune -print0 | xargs -0 du -sh | sort -h
```

## Vacía las cachés globales de paquetes

Cada gestor de paquetes guarda además una caché de descargas que comparten todos los proyectos. Vaciarla es definitivo pero inofensivo: los paquetes se vuelven a descargar cuando hacen falta.

```sh
npm cache clean --force
pnpm store prune
yarn cache clean
bun pm cache rm
```

- **npm** guarda su caché en `~/.npm/_cacache`. La [documentación de la caché de npm](https://docs.npmjs.com/cli/v11/commands/npm-cache) explica por qué `clean` necesita `--force` e indica que `npm cache verify` hace una recolección de elementos no usados sin vaciarlo todo. Los paquetes que descarga `npx` están en `~/.npm/_npx`.
- **pnpm** guarda su almacén en `~/Library/pnpm/store` en macOS (`pnpm store path` muestra el tuyo). [`pnpm store prune`](https://pnpm.io/cli/store) elimina solo los paquetes a los que no hace referencia ningún proyecto, y la documentación de pnpm recomienda ejecutarlo de vez en cuando, no continuamente.
- **Yarn Classic** guarda la caché en `~/Library/Caches/Yarn`. Con Yarn Berry, `yarn cache clean --mirror` vacía la caché global de `~/.yarn/berry/cache`.
- **Bun** guarda la caché en `~/.bun/install/cache`; `bun pm cache rm` la vacía.

Las versiones antiguas de Node.js instaladas con nvm también se acumulan en `~/.nvm/versions/node`; `nvm uninstall <versión>` elimina la que ya no necesites.

## Por qué pnpm libera menos de lo que indica du

npm y Yarn Classic copian cada paquete en el `node_modules` de cada proyecto. pnpm guarda cada paquete una sola vez, en un [almacén direccionable por contenido](https://pnpm.io/motivation), y enlaza sus archivos en cada proyecto que lo usa. En macOS, el [`packageImportMethod`](https://pnpm.io/settings/node-modules) por defecto de pnpm intenta primero usar clones APFS y, si no, [enlaces físicos](https://moreroom.app/glossary#hard-link).

![npm copia los paquetes en cada proyecto, mientras que pnpm comparte un único almacén mediante clones o enlaces físicos](https://moreroom.app/learn/img/node-modules-cleanup-pnpm-store.svg)

En ambos casos, los bytes se comparten. `du` sigue contando el tamaño completo en cada proyecto, así que borrar el `node_modules` de un proyecto de pnpm suele liberar mucho menos de lo que indicaba. El espacio vuelve cuando `pnpm store prune` elimina los paquetes que no usa ninguno de los proyectos restantes. Para que esto funcione, el almacén tiene que estar en el mismo disco que el proyecto; los proyectos que están en un disco externo tienen allí su propio almacén.

## Cómo te ayuda MoreRoom

La versión gratuita de MoreRoom encuentra las carpetas `node_modules` de los proyectos que tienen un lockfile y no se han tocado en 30 días, además de cachés de frameworks como `.next` y `.turbo`, y las marca como “Seguro de eliminar”. Omite `~/Library` y las carpetas de herramientas como `~/.nvm` y `~/.vscode`. Tú trasladas los elementos a la Papelera de uno en uno, con Deshacer. Para la caché de npm y el almacén de pnpm, MoreRoom ejecuta `npm cache clean --force` y `pnpm store prune`; esos comandos son definitivos y así se indica.

MoreRoom Pro añade la hibernación de proyectos: los proyectos inactivos se deshacen de las carpetas que se pueden regenerar, como `node_modules` y los resultados de compilación, y se despiertan con un clic cuando vuelves a ellos. Pro incluye también el Colector y el modo objetivo.

## FAQ

### ¿Es seguro borrar node_modules?

Sí. Solo contiene las dependencias instaladas, que tu gestor de paquetes puede volver a instalar a partir de package.json y del lockfile. Bórrala solo en proyectos que no estés ejecutando en ese momento, y conserva el lockfile.

### ¿Debo borrar también package-lock.json?

No. El lockfile registra las versiones exactas que funcionaban. Consérvalo para que npm ci, pnpm install o yarn install puedan recrear más adelante el mismo node_modules.

### ¿Por qué borrar node_modules en un proyecto de pnpm libera tan poco espacio?

pnpm guarda una sola copia de cada paquete en un almacén compartido y la clona o enlaza con enlaces físicos en cada proyecto. Borrar el node_modules de un proyecto solo elimina los enlaces; después, pnpm store prune borra los paquetes que ningún proyecto usa.

### ¿Es seguro npm cache clean --force?

Sí. Vacía la caché de descargas de npm en ~/.npm/_cacache, y npm vuelve a descargar los paquetes cuando hace falta. La documentación de npm indica que vaciar la caché solo sirve para recuperar espacio en disco.

### ¿npkill traslada las carpetas a la Papelera?

No. npkill borra las carpetas seleccionadas al momento. Usa su opción --dry-run para hacer un ensayo, y el Finder si quieres la Papelera como red de seguridad.
