509 Stimmen

Wie bereinige ich den node_modules-Ordner von Paketen, die nicht in der package.json enthalten sind?

Angenommen, ich installiere Projektpakete mit npm install, das in package.json nach Modulen sucht, die installiert werden sollen. Nach einer Weile sehe ich, dass ich ein bestimmtes Modul nicht mehr benötige und entferne seine Abhängigkeit von package.json. Dann entferne ich einige andere Module aus package.json, weil sie nicht mehr benötigt werden und andere durch Alternativen ersetzt werden.

Jetzt möchte ich den node_modules-Ordner aufräumen, damit nur die in package.json aufgeführten Module dort bleiben und der Rest verschwinden muss, ähnlich wie bei npm clean. Ich weiß, dass ich sie manuell entfernen kann, möchte aber gerne eine nette, sofort einsatzbereite Funktionalität dafür haben.

31voto

Ankit Parmar Punkte 608

Zuerst rimraf global installieren

npm install rimraf -g

Gehen Sie über die Eingabeaufforderung zum Pfad, in dem sich Ihr node_modules-Ordner befindet, und wenden Sie den folgenden Befehl an

rimraf node_modules

16voto

Nur für den Fall, dass es jemand benötigt, hier ist etwas, was ich kürzlich gemacht habe, um das zu lösen:

npm ci - Wenn Sie alles bereinigen und alle Pakete von Grund auf neu installieren möchten:

-Es führt eine saubere Installation durch: Wenn der node_modules-Ordner vorhanden ist, löscht npm diesen und installiert einen neuen.

-Es überprüft die Konsistenz: Wenn package-lock.json nicht vorhanden ist oder nicht mit dem Inhalt von package.json übereinstimmt, stoppt npm mit einem Fehler.

https://docs.npmjs.com/cli/v6/commands/npm-ci

npm-dedupe - Wenn Sie das aktuelle node_modules-Verzeichnis aufräumen möchten, ohne alle Pakete zu löschen und neu zu installieren

Durchsucht den lokalen Paketbaum und versucht, die Gesamtstruktur zu vereinfachen, indem Abhängigkeiten weiter nach oben im Baum bewegt werden, wo sie von mehreren abhängigen Paketen effektiver geteilt werden können.

https://docs.npmjs.com/cli/v6/commands/npm-dedupe

14voto

robertovg Punkte 888

Der beste Artikel, den ich dazu gefunden habe, ist dieser: https://trilon.io/blog/how-to-delete-all-nodemodules-recursively

Alles aus der Konsole und einfach von jedem Ordner aus auszuführen.

Aber als Zusammenfassung des Artikels, dieser Befehl, um die Größe für jeden gefundenen node_module Ordner in verschiedenen Projekten zu finden.

find . -name "node_modules" -type d -prune -print | xargs du -chs

Und um sie tatsächlich zu entfernen:

find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;

Der Artikel enthält auch Anweisungen für die Windows-Shell.

12voto

Hast du npm prune ausprobiert?

Es sollte alles deinstallieren, was nicht in deiner Paketdatei aufgelistet ist.

https://npmjs.org/doc/cli/npm-prune.html

7voto

Amitesh Singh Punkte 152

Ich habe ein paar Zeilen in der package.json hinzugefügt:

"scripts": {
  ...
  "clean": "rmdir /s /q node_modules",
  "reinstall": "npm run clean && npm install",
  "rebuild": "npm run clean && npm install && rmdir /s /q dist && npm run build --prod",
  ...
}

Wenn Sie nur clean verwenden möchten, können Sie rimraf node_modules oder rm -rf node_modules verwenden.

Es funktioniert gut

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X