Vous pouvez utiliser npm-prune pour supprimer les packages superflus.
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
Cette commande supprime les packages "étrangers". 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 sont pas répertoriés 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 vos devDependencies . La définition de --no-production annulera la mise en production de NODE_ENV .
Si l' indicateur --dry-run est utilisé, aucune modification ne sera réellement effectuée.
Si l' indicateur --json est utilisé, les modifications que npm prune a apportées (ou auraient apportées avec --dry-run ) sont imprimées en tant qu'objet JSON.
En fonctionnement normal avec package-locks activé, les modules superflus sont élagués automatiquement lorsque les modules sont installés et vous n'aurez besoin que de cette commande avec l' indicateur --production .
Si vous avez désactivé les verrous de package, les modules superflus ne seront pas supprimés et c'est à vous d'exécuter npm prune de temps en temps pour les supprimer.
Utilisez npm-dedupe pour réduire la duplication
npm dedupe
npm ddp
Effectue une recherche dans l'arborescence de packages locale 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érez ce graphique de dépendance:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
Dans ce cas, npm-dedupe transformera l'arborescence en:
a
+-- b
+-- d
`-- c@1.0.10
En raison de la nature hiérarchique de la recherche de module du nœud, b et d obtiendront tous les deux leur dépendance satisfaite par le package c unique au niveau racine de l'arborescence.
L'algorithme de déduplication parcourt l'arborescence, déplaçant chaque dépendance le plus haut possible dans l'arborescence, même si aucun doublon n'est trouvé. Cela se traduira par un arbre plat et dédupliqué.
node_modules
lorsqu'ils sont supprimés de leur dossier respectifpackage.json
?