web-dev-qa-db-fra.com

Commande npm pour désinstaller ou élaguer les packages inutilisés dans Node.js

Existe-t-il un moyen de désinstaller simplement toutes les dépendances inutilisées (non déclarées) d'un projet Node.js (celles qui ne sont plus définies dans mon package.json.). Lorsque je mets à jour mon application, je souhaite que les packages non référencés soient automatiquement supprimés.

375
Tarion

Exécutez npm Prune pour supprimer les modules non répertoriés dans _package.json_.

De _npm help Prune_:

Cette commande supprime les packages "superflus". Si un nom de package est fourni, seuls les packages correspondant à l'un des noms fournis sont supprimés.

Les packages superflus sont des packages qui ne figurent pas dans la liste des dépendances du package parent.

Si l'indicateur _--production_ est spécifié, cette commande supprimera les packages spécifiés dans votre devDependencies.

631
Darkhogg

Si vous n'êtes pas inquiet après quelques minutes, la solution serait de rm -rf node_modules et npm install pour reconstruire les modules locaux.

280
Pyrce

Vous pouvez utiliser npm-Prune pour supprimer les paquets superflus.

npm Prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]

Cette commande supprime les packages "superflus". Si un nom de package est fourni, seuls les packages correspondant à l'un des noms fournis sont supprimés.

Les packages superflus sont des packages qui ne figurent pas dans la liste des dépendances du package parent.

Si l'indicateur - production est spécifié ou si la variable d'environnement NODE_ENV est définie sur production, cette commande supprimera les packages spécifiés dans votre - devDependencies. Le réglage - no-production annulera NODE_ENV étant défini sur production.

Si le drapeau - dry-run est utilisé, aucun changement ne sera réellement effectué.

Si le drapeau - json est utilisé, les modifications npm Prune effectuées (ou l'auraient été avec - dry-run) sont imprimées comme suit: un objet JSON.

En fonctionnement normal avec les verrous de paquet activés, les modules superflus sont automatiquement supprimés lors de l'installation des modules et vous n'aurez besoin de cette commande qu'avec l'indicateur - production.

Si vous avez désactivé les verrous de paquets, les modules superflus ne seront pas supprimés et vous devrez exécuter npm Prune de temps à autre pour les supprimer.

Utilisez npm-dedupe pour réduire les doublons

npm dedupe
npm ddp

Recherche dans l'arborescence locale des packages et tente de simplifier la structure globale en déplaçant les dépendances plus haut dans l'arborescence, où elles peuvent être partagées plus efficacement par plusieurs packages dépendants.

Par exemple, considérons ce graphe de dépendance:

a
+-- b <-- depends on [email protected]
|    `-- [email protected]
`-- d <-- depends on c@~1.0.9
     `-- [email protected]

Dans ce cas, npm-dedupe transformera l’arbre en:

 a
 +-- b
 +-- d
 `-- [email protected]

En raison de la nature hiérarchique de la recherche de module du noeud, b et d obtiendront tous les deux leur dépendance par le seul package c au niveau racine de l'arborescence.

L'algorithme de déduplication parcourt l'arborescence, en déplaçant chaque dépendance aussi haut que possible dans l'arborescence, même si des doublons ne sont pas trouvés. Cela se traduira par une arborescence plate et dédupliquée.

9
Igor Litvinovich