Możesz użyć npm-prune do usunięcia obcych pakietów.
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
To polecenie usuwa „obce” pakiety. Jeśli podano nazwę pakietu, usuwane są tylko pakiety pasujące do jednej z podanych nazw.
Zewnętrzne pakiety to pakiety, które nie są wymienione na liście zależności pakietów nadrzędnych.
Jeśli --production flaga jest określona lub NODE_ENV zmienna jest ustawiona do produkcji , to polecenie usunie pakiety podany w devDependencies . Ustawienie - brak produkcji spowoduje zanegowanie ustawienia NODE_ENV na produkcję .
Jeśli zostanie użyta flaga --dry-run, wówczas nie zostaną wprowadzone żadne zmiany.
Jeśli użyta jest flaga --json, zmiany dokonane npm przycinania (lub zostałyby wykonane za pomocą --dry-run ) są drukowane jako obiekt JSON.
W normalnej pracy z włączonymi blokadami pakietów, dodatkowe moduły są automatycznie przycinane po zainstalowaniu modułów i będziesz potrzebować tylko tego polecenia z flagą --production .
Jeśli wyłączyłeś blokady pakietów, wówczas zewnętrzne moduły nie zostaną usunięte i od czasu do czasu musisz je uruchomić npm prune .
Użyj npm-dedupe, aby zmniejszyć powielanie
npm dedupe
npm ddp
Przeszukuje lokalne drzewo pakietów i próbuje uprościć ogólną strukturę, przenosząc zależności dalej w górę drzewa, gdzie mogą być efektywniej współużytkowane przez wiele zależnych pakietów.
Weźmy na przykład ten wykres zależności:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
W takim przypadku npm-dedupe przekształci drzewo w:
a
+-- b
+-- d
`-- c@1.0.10
Z powodu hierarchicznej natury wyszukiwania modułu węzła, b i d uzyskają swoją zależność od pojedynczego pakietu c na poziomie katalogu głównego drzewa.
Algorytm deduplikacji idzie po drzewie, przesuwając każdą zależność tak wysoko w drzewie, jak to możliwe, nawet jeśli nie znaleziono duplikatów. Spowoduje to zarówno płaskie, jak i deduplikowane drzewo.
node_modules
gdy są usuwane z odpowiednichpackage.json
?