In het kort
- node_modules verwijderen is veilig zolang je package.json en de lockfile bewaart; npm ci of pnpm install zet exact dezelfde versies terug.
- find met -prune toont elke node_modules-map in je thuismap met de grootte erbij, zonder in geneste mappen af te dalen.
- Met npx npkill blader je door node_modules-mappen en verwijder je ze interactief, maar meteen en zonder prullenmand.
- Met pnpm zijn de bestanden in node_modules klonen of harde links van een gedeelde opslag, dus verwijderen levert weinig op totdat je pnpm store prune uitvoert.
- Buildmappen zoals .next, .turbo, .nuxt, .svelte-kit en .parcel-cache worden automatisch opnieuw opgebouwd en mogen ook veilig weg.
Zo vind en ruim je node_modules-mappen op een Mac op
- Toon node_modules-mappen met hun grootte. Voer een find-opdracht uit op je thuismap die ~/Library en de prullenmand overslaat, bij elke bovenste node_modules stopt en de resultaten aan du -sh doorgeeft.
- Kies projecten waaraan je niet werkt. Controleer of elk project een package.json en een lockfile heeft, zoals package-lock.json, pnpm-lock.yaml, yarn.lock of bun.lock. Bewaar die bestanden.
- Verwijder hun node_modules-mappen. Verplaats elke node_modules-map in de Finder naar de prullenmand, of verwijder ze interactief met npx npkill, dat ze definitief verwijdert.
- Wis de caches van je pakketbeheerders. Voer npm cache clean --force, pnpm store prune, yarn cache clean of bun pm cache rm uit voor de pakketbeheerders die je gebruikt.
- Installeer opnieuw als je terugkeert naar een project. Voer npm ci, pnpm install, yarn install of bun install uit in de projectmap om node_modules vanuit de lockfile terug te zetten.
Een node_modules-map bevat de afhankelijkheden die voor één JavaScript- of TypeScript-project zijn geïnstalleerd, en is doorgaans een paar honderd megabyte groot. Met tientallen oude projecten loopt dat makkelijk op tot tientallen gigabytes. Je kunt ze veilig verwijderen zolang je package.json en de lockfile bewaart: je pakketbeheerder installeert dezelfde versies opnieuw zodra je naar het project terugkeert.
Vind elke node_modules-map en de grootte ervan
Deze opdracht doorzoekt je thuismap, slaat ~/Library en de prullenmand over en toont elke node_modules-map met de grootte, met de grootste onderaan:
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
Zo werkt het: de eerste -prune slaat de twee uitgesloten mappen over, -type d -name node_modules vindt de mappen, en de tweede -prune zorgt dat find er niet in afdaalt, zodat geneste node_modules één keer worden meegeteld, binnen hun bovenliggende map. du -sh meet elke map en sort -h sorteert de lijst. De opdracht leest alleen. Bij een grote thuismap kan het een paar minuten duren, en Terminal kan om toegang vragen tot Documenten, Bureaublad of Downloads.
Negeer resultaten in mappen van tools zoals ~/.nvm, ~/.vscode of ~/.cursor. Die horen bij geïnstalleerde tools en editorextensies, niet bij je projecten.
Gebruiken je projecten pnpm, dan zijn de getoonde groottes groter dan wat je terugkrijgt. Verderop lees je waarom.
Verwijder de mappen die je niet nodig hebt
Open voordat je iets verwijdert de projectmap en controleer of er een lockfile in staat: package-lock.json (npm), pnpm-lock.yaml (pnpm), yarn.lock (Yarn) of bun.lock / bun.lockb (Bun). Bewaar die, en bewaar ook package.json.
De veiligste manier om te verwijderen is node_modules in de Finder naar de prullenmand te slepen. Zolang je de prullenmand niet leegt, kun je nog van gedachten veranderen. Met veel kleine bestanden duurt het verplaatsen naar de prullenmand even.
Vanuit Terminal, in één projectmap:
cd ~/Projects/old-app
rm -rf node_modules
rm -rf verwijdert definitief, zonder prullenmand. Controleer eerst met pwd in welke map je staat, en gebruik het nooit met een jokerteken of een lege variabele.
npkill: een interactief alternatief
npkill toont node_modules-mappen met hun grootte en laat je ze met één toetsaanslag tegelijk verwijderen:
npx npkill -d ~/Projects
-d bepaalt waar de zoektocht begint; zonder die optie begint npkill in de huidige map. Navigeer met de pijltoetsen en druk op de spatiebalk of Del om de geselecteerde map te verwijderen. npkill verwijdert meteen, zonder prullenmand. Mappen die apps nodig hebben om te werken, markeert het met ⚠️; laat die met rust. Met --dry-run simuleer je het verwijderen als je het eerst wilt uitproberen.
Opnieuw installeren als je terugkeert naar een project
Gebruik de opdracht die precies installeert wat in de lockfile staat:
| Pakketbeheerder | Lockfile | Opnieuw installeren |
|---|---|---|
| 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 vereist een lockfile, verwijdert eerst een eventuele bestaande node_modules en wijzigt nooit package.json of de lockfile. Een gewone npm install werkt ook, maar kan de lockfile bijwerken.
Andere mappen die zichzelf opnieuw opbouwen
Frameworks en buildtools bewaren caches en uitvoer naast node_modules. In projecten die je niet draait, kun je ze veilig verwijderen; de volgende build of devserver maakt ze opnieuw aan.
| Map | Aangemaakt door |
|---|---|
.next |
Next.js |
.nuxt |
Nuxt |
.svelte-kit |
SvelteKit |
.turbo |
Turborepo |
.parcel-cache |
Parcel |
.angular |
Angular CLI |
dist en build bevatten meestal ook builduitvoer, maar de namen zijn algemeen. Sommige projecten committen daar bestanden of gebruiken ze voor iets anders, dus kijk erin voordat je ze verwijdert.
Zo toon je de frameworkcaches in een projectenmap:
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
De globale pakketcaches wissen
Elke pakketbeheerder houdt daarnaast een downloadcache bij die alle projecten delen. Die wissen is definitief, maar onschuldig: pakketten worden opnieuw gedownload als dat nodig is.
npm cache clean --force
pnpm store prune
yarn cache clean
bun pm cache rm
- npm bewaart zijn cache in
~/.npm/_cacache. De documentatie van npm cache legt uit waaromclean--forcenodig heeft en vermeldt datnpm cache verifyopruimt zonder alles te legen. Pakketten dienpxophaalt, staan in~/.npm/_npx. - pnpm bewaart zijn opslag op macOS in
~/Library/pnpm/store(pnpm store pathtoont die van jou).pnpm store pruneverwijdert alleen pakketten waarnaar geen project verwijst, en de documentatie van pnpm raadt aan het af en toe uit te voeren, niet voortdurend. - Yarn Classic cachet in
~/Library/Caches/Yarn. Bij Yarn Berry leegtyarn cache clean --mirrorde globale cache in~/.yarn/berry/cache. - Bun cachet in
~/.bun/install/cache;bun pm cache rmmaakt die leeg.
Ook oude Node.js-versies die je met nvm hebt geïnstalleerd, tellen op in ~/.nvm/versions/node; met nvm uninstall <version> verwijder je een versie die je niet meer nodig hebt.
Waarom pnpm minder vrijmaakt dan du aangeeft
npm en Yarn Classic kopiëren elk pakket naar de node_modules van elk project. pnpm bewaart elk pakket één keer, in een content-addressable store, en linkt de bestanden in elk project dat het pakket gebruikt. Op macOS probeert de standaardinstelling packageImportMethod van pnpm eerst APFS-klonen en daarna harde links.
Hoe dan ook worden de bytes gedeeld. du telt in elk project toch de volledige grootte, dus de node_modules van een pnpm-project verwijderen levert meestal veel minder op dan werd aangegeven. De ruimte komt terug wanneer pnpm store prune pakketten verwijdert die geen overgebleven project meer gebruikt. Daarvoor moet de opslag op dezelfde schijf staan als het project; projecten op een externe schijf krijgen daar een eigen opslag.
Hoe MoreRoom helpt
De gratis versie van MoreRoom vindt node_modules-mappen in projecten die een lockfile hebben en 30 dagen niet zijn aangeraakt, plus frameworkcaches zoals .next en .turbo, en labelt ze als “Veilig te verwijderen”. Het slaat ~/Library over, net als mappen van tools zoals ~/.nvm en ~/.vscode. Je verplaatst onderdelen één voor één naar de prullenmand, met Herstel. Voor de npm-cache en de pnpm-opslag voert MoreRoom npm cache clean --force en pnpm store prune uit; die opdrachten zijn definitief en worden ook zo gelabeld.
MoreRoom Pro voegt Projectwinterslaap toe: inactieve projecten laten mappen vallen die opnieuw kunnen worden opgebouwd, zoals node_modules en builduitvoer, en worden met één klik weer wakker zodra je terugkeert. Pro bevat ook de Verzamelaar en Doelmodus.
Veelgestelde vragen
Is het veilig om node_modules te verwijderen?
Ja. De map bevat alleen geïnstalleerde afhankelijkheden, die je pakketbeheerder opnieuw kan installeren vanuit package.json en de lockfile. Verwijder hem alleen bij projecten die je nu niet draait, en bewaar de lockfile.
Moet ik package-lock.json ook verwijderen?
Nee. De lockfile legt de exacte versies vast die werkten. Bewaar hem, zodat npm ci, pnpm install of yarn install later dezelfde node_modules kan aanmaken.
Waarom levert het verwijderen van node_modules in een pnpm-project zo weinig ruimte op?
pnpm bewaart één kopie van elk pakket in een gedeelde opslag en kloont of hardlinkt die bestanden in elk project. Verwijder je de node_modules van een project, dan verdwijnen alleen de links; pnpm store prune verwijdert daarna de pakketten die geen enkel project gebruikt.
Is npm cache clean --force veilig?
Ja. Het leegt de downloadcache van npm in ~/.npm/_cacache, en npm downloadt pakketten opnieuw als dat nodig is. Volgens de documentatie van npm is de cache wissen alleen nuttig om schijfruimte terug te winnen.
Verplaatst npkill mappen naar de prullenmand?
Nee. npkill verwijdert de geselecteerde mappen meteen. Gebruik de optie --dry-run om te oefenen, en de Finder als je de prullenmand als vangnet wilt.