node_modules frisst dein Laufwerk? Auf dem Mac aufräumen
Ordner namens node_modules kannst du in jedem Projekt gefahrlos löschen, an dem du gerade nicht arbeitest. Sie enthalten nur geladene Abhängigkeiten, und der Installationsbefehl legt sie neu an. Ein einziger Terminal-Befehl listet alle unter deinem Projektordner nach Größe auf, sodass du siehst, welche sich zu entfernen lohnen.
Die Paketmanager führen außerdem Download-Caches außerhalb deiner Projekte. Auch die lassen sich leeren, mit dem eigenen Befehl des jeweiligen Werkzeugs.
Warum node_modules so viel Platz belegt
Mit npm und Yarn bekommt jedes Projekt eine eigene vollständige Kopie jeder Abhängigkeit und von allem, was diese Abhängigkeiten brauchen. Eine kleine Web-App kann einen sehr großen Baum von Paketen nach sich ziehen. Zehn alte Projekte bedeuten zehn getrennte Kopien.
Die Ordner bestehen außerdem aus einer enormen Zahl kleiner Dateien, weshalb sie langsam zu kopieren, langsam zu sichern und langsam zu indizieren sind. Nichts darin stammt von dir. Die Liste dessen, was installiert werden soll, steht in package.json und im Lockfile, und die behältst du.
Jeden Ordner node_modules nach Größe auflisten
Der Befehl unten durchsucht einen Ordner nach node_modules-Verzeichnissen, misst jedes und sortiert die Liste so, dass das größte zuletzt steht. Er liest nur. Ersetze ~/Projects durch den Ordner, in dem du deinen Code aufbewahrst.
Richte ihn auf deinen Code-Ordner, nicht auf deinen ganzen Benutzerordner. Apps und Editoren haben eigene node_modules-Ordner in ~/Library und in App-Bundles, und die gehören zur App, sie sind keine Überbleibsel. Wenn du sie löschst, geht die App kaputt.
find ~/Projects -type d -name node_modules -prune -exec du -sh {} + 2>/dev/null | sort -hEntscheide, welche du löschst
node_modules zu löschen kostet dich nur die Zeit der nächsten Installation, die Frage ist also, welche Projekte du bald öffnen wirst.
- Projekte, die du seit Monaten nicht angefasst hast: löschen. Hier liegt der größte Teil des Platzes.
- Geklonte Repositorys, die du nur gelesen oder einmal ausprobiert hast: löschen.
- Projekte, an denen du diese Woche arbeitest: lass sie. Du würdest nur sofort neu installieren.
- Projekte ohne Lockfile: erst nachdenken. Eine frische Installation kann bei manchen Paketen neuere Versionen auflösen als die, die du hattest, und das kann das Verhalten ändern.
- Projekte, die von einer privaten Registry abhängen oder von Paketen, die vielleicht nicht mehr veröffentlicht sind: Stelle vor dem Löschen sicher, dass du noch installieren kannst.
Gefahrlos löschen
Beende zuerst jeden Dev-Server oder Build, der im Projekt läuft. Öffne dann im Finder den Projektordner und lege node_modules in den Papierkorb. Das ist der Weg, der Fehler verzeiht: Schlägt die Neuinstallation fehl, kannst du den Ordner zurücklegen, bevor du den Papierkorb entleerst.
Wenn du zum Projekt zurückkehrst, führe den Installationsbefehl des Paketmanagers aus, den es verwendet, unten für npm gezeigt. Hat das Projekt eine package-lock.json, installiert npm ci genau die darin festgehaltenen Versionen.
Andere Build-Ausgaben in denselben Projekten können denselben Weg gehen: Ordner wie .next, dist, build und .turbo werden beim nächsten Build neu angelegt.
npm installDie Caches der Paketmanager leeren
Außerhalb deiner Projekte führt jeder Paketmanager einen Cache von allem, was er geladen hat, damit wiederholte Installationen schnell gehen. Diese Caches wachsen nur. Die Befehle unten sind die dokumentierten Wege, sie zu leeren, und jeder löscht nur den Download-Cache des jeweiligen Werkzeugs. Deine Projekte funktionieren weiter, und die nächste Installation lädt erneut.
- npm führt seinen Cache in ~/.npm. npm verlangt --force, weil es den Cache als selbstheilend betrachtet. Um ihn zu prüfen, ohne ihn zu leeren, führe npm cache verify aus.
- Yarn 1 führt einen globalen Cache, und yarn cache clean leert ihn. Bei neueren Yarn-Versionen führst du den Befehl innerhalb eines Projekts aus.
- pnpm führt einen gemeinsamen Store. pnpm store prune entfernt nur Pakete, auf die kein Projekt auf deinem Mac mehr verweist.
- Bun führt einen globalen Cache, und bun pm cache rm leert ihn.
npm cache clean --force
yarn cache clean
pnpm store prune
bun pm cache rmVon vornherein weniger Platz belegen
pnpm speichert jede Version eines Pakets einmal auf dem Laufwerk und verlinkt sie in jedes Projekt, das sie nutzt, sodass zehn Projekte mit denselben Abhängigkeiten kaum mehr belegen als eines. Wenn node_modules ein wiederkehrendes Problem ist, ist der Umstieg neuer Projekte auf pnpm die dauerhafte Lösung.
Ein Nebeneffekt ist, dass Größen falsch aussehen. Ein Werkzeug, das Dateigrößen zusammenzählt, zählt ein verlinktes Paket einmal pro Projekt, sodass ein node_modules-Ordner von pnpm viel größer erscheinen kann als der Platz, den er wirklich belegt.
Es hilft auch, Code aus synchronisierten Ordnern herauszuhalten. Ein Ordner node_modules in iCloud Drive oder Dropbox bedeutet, dass eine riesige Zahl kleiner Dateien ohne jeden Nutzen hochgeladen wird.
Wie Diskzy mit node_modules umgeht
Der Tab „Clean up“ (Aufräumen) von Diskzy findet Build-Ordner von Projekten, darunter node_modules, .build, Pods und virtuelle Umgebungen, wo auch immer sie auf dem Laufwerk liegen. Ein Ordner bleibt nicht angehakt, wenn sich sein Projekt in den letzten 14 Tagen geändert hat, sodass die Projekte, an denen du arbeitest, nicht angefasst werden, außer du wählst sie aus.
Die Caches von npm, Yarn, pnpm und Bun werden aufgelistet und sind angehakt. Alles Entfernte kommt in den Papierkorb, sodass sich ein Ordner zurücklegen lässt, bis du ihn entleerst.
Häufige Fragen
- Kann man node_modules gefahrlos löschen?
- Ja, in deinen eigenen Projekten. Der Ordner enthält nur geladene Abhängigkeiten, und npm install, yarn install oder pnpm install legt ihn neu an. Lösche keine node_modules-Ordner in Apps oder in ~/Library.
- Wie finde ich alle node_modules-Ordner auf meinem Mac?
- Führe find mit -name node_modules und -prune auf dem Ordner aus, in dem du deinen Code aufbewahrst, und übergib jedes Ergebnis an du -sh, um seine Größe zu sehen. Der vollständige Befehl steht in diesem Ratgeber.
- Geht mein Projekt kaputt, wenn ich node_modules lösche?
- Nein. Das Projekt läuft erst wieder, wenn du neu installierst, und dann funktioniert es wie zuvor. Mit einem Lockfile werden dieselben Versionen installiert.
- Kann man den npm-Cache gefahrlos leeren?
- Ja. Der Cache ist eine lokale Kopie von Paketen, die npm bereits geladen hat. Bei der nächsten Installation holt npm alles Fehlende aus der Registry.
- Warum ist mein Ordner node_modules größer als mein ganzes Projekt?
- Weil er jede Abhängigkeit enthält und alles, wovon diese Abhängigkeiten abhängen. Dein eigener Code ist meist nur ein kleiner Bruchteil des Ganzen.
Verwandte Ratgeber
- 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
Deinstallations-Anleitungen
Sieh, wo der Platz auf deinem Mac geblieben ist
Diskzy kartiert dein Laufwerk, erklärt die Systemdaten und räumt weg, was gefahrlos weg kann. 72 Stunden kostenlos, danach einmalig 9 $ für 2 Macs.
Diskzy kostenlos testen