Supprimer automatiquement les dépendances de package.json lors de l'utilisation de la désinstallation de npm


84

Après que npm initje puisse ajouter des dépendances dans mon package.json en utilisant ceci:

npm install package --save

Et dites, je veux uninstallle paquet et je le fais en faisant:

npm uninstall package

mais je veux que mon package.json soit mis à jour en conséquence sans que je doive aller manuellement dans le fichier et supprimer cette ligne.

D'après les documents npm, il est dit:

C'est strictement additif, donc il ne supprime pas les options de votre package.json sans une très bonne raison de le faire.

Donc, je voulais juste savoir si cela est même possible.


Étant donné que mes dépendances sont automatiquement ajoutées sur package.json chaque fois que j'installe avec l'indicateur (--save), je me demandais s'il existe un moyen de supprimer les dépendances de package.json chaque fois que je désinstalle le package également.
cri

Réponses:


150

Utilisez le même --savedrapeau. Si vous avez installé une dépendance avec:

$> npm install grunt-cli --save

vous pouvez le désinstaller, avec package.json mis à jour, en utilisant:

$> npm uninstall grunt-cli --save

L'indicateur 'save' indique à npm de mettre à jour package.json en fonction de l'opération que vous venez de faire.


3
J'utilise npm avec ember-cli et j'ai dû utiliser à la --save-devplace de --save.
gerry3

4
si vous l'avez installé avec --save-dev, alors la désinstallation est aussi --save-dev, puisque --save enregistre dans la dependenciessection du fichier package.json, alors que --save-dev enregistrera dans la devDependenciessection
Mike ' Pomax 'Kamermans

7
Je suis allé loin depuis la publication de cette question et voici un petit conseil de pro. Vous pouvez utiliser npm i <package_name> -Spour ajouter à votre dependenciesliste ou npm i <package_name> -Dpour ajouter à votre dev-dependencies. Le même drapeau s'applique pour la suppression avec npm rm <package_name> -Sornpm rm <package_name> -D
shriek

1
mais notez que ce sont simplement les équivalents de drapeau abrégé pour --save et --save-dev. Voir npm helptous les drapeaux et leurs équivalents sténographiques. (tout ce qui est installé avec -S ou --save et être désinstallé en utilisant l'un ou l'autre, npm ne les voit pas comme différents. Juste "moins de frappe" pour -S)
Mike 'Pomax' Kamermans

1
Vous êtes un saint parmi les hommes.
John Von Neumann

0

Dans mon cas --save n'a pas effacé l'entrée de package.json, la commande suggérée par ionic-check je pense que si la désinstallation se termine avec des erreurs package.json ne sera pas mis à jour, auquel cas vous n'avez qu'une option pour changer manuellement package.json, c'est fastidieux mais le seul moyen je suppose

MISE À JOUR

lorsque vous désinstallez un package qui a une dépendance sur un autre package qui est actif, dans quel cas la désinstallation peut échouer avec des erreurs / avertissements, la méthode sûre consiste à suivre le graphe de dépendances pas sûr s'il existe un outil disponible, un outil pratique pour de telles opérations, avertissement les messages sont assez trompeurs bien que "vous devez installer des dépendances homologues .." n'a aucun sens lorsque nous désinstalle un paquet


1
Cela ne devrait pas être nécessaire: s'il est dans la dependenciesliste, il uninstall --save devrait le supprimer, que quelque chose d'autre en dépende ou non. NPM utilise un aplatissement des dépendances plutôt intelligent, donc si vous avez X dans votre liste de dépendances (explicitement) et que vous désinstallez X --save, il sera supprimé. Cependant, rappelez - vous qu'il ya des listes de dépendance multiples et --savene sont pas les mêmes que --save-dev, --save-prodou --save-optional. Oui également: si votre uninstallconduit à des erreurs, NPM s'arrête à cette erreur. Il n'essaie pas de continuer car il ne peut plus garantir l'exactitude.
Mike 'Pomax' Kamermans
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.