Comment réinstaller les dépendances d'une application à l'aide de npm?


386

Existe-t-il un moyen simple de réinstaller tous les packages dont mon application dépend (c'est-à-dire qu'ils se trouvent dans le dossier node_modules de mes applications)?


4
npm rebuildpourrait également aider certains problèmes avec les dépendances natives
Francisco Presencia

1
Au cas où cela aiderait les autres: Si vous essayez simplement de réinstaller un paquet, npm update <packageName>
ça

Réponses:


619

La façon la plus simple que je puisse voir est de supprimer le node_modulesdossier et de l'exécuter npm install.


28
D'accord; en supposant que vous avez créé un package.jsonfichier pour votre application.
JohnnyHK

9
Attention, l'exécution npm installaprès la suppression du node_modulesrépertoire peut entraîner la suppression de différentes versions de dépendances définies package.json. Si vous avez besoin de versions très spécifiques des dépendances pour votre application, soyez prudent et examinez npm shrinkwrapou vérifiez votre node_modulesrépertoire pour contrôler les sources.
smithclay

10
@smithclay J'ai défini la version explicite des packages dans le package.json de mon application, donc ça devrait aller, non?
trusktr

@vadim Je faisais des tests sur le comportement de npm installet il réinstalle toujours les dépendances et met à niveau les packages vers les dernières versions comme autorisé par package.json. La suppression des node_modulesdossiers n'est donc pas nécessaire à moins que vous ne pensiez qu'elle est corrompue. Y a-t-il une raison pour laquelle vous pensez qu'il devrait être supprimé? Cependant, si l'intention est de supprimer tous les paquets qui sont superflus, alors vous pouvez exécuter à la npm pruneplace
himanshu

1
@himanshu vous avez raison npm installmet à niveau tous les modules à l'état package.json. Mais la question est de savoir comment réinstaller tous les packages . Ils peuvent donc être corrompus ou avoir besoin de reconstruire les parties binaires après la mise à niveau de la version node.js.
Vadim Baryshev

96

La bonne façon est d'exécuter npm update. C'est une commande vraiment puissante, elle met à jour les packages manquants et vérifie également si une version plus récente du package déjà installé peut être utilisée.

Lisez l' introduction à NPM pour comprendre ce que vous pouvez faire avec npm.


58
Mais s'il n'y a pas de nouveau package, cela ne fera rien, non? J'essaie de forcer la réinstallation même si le package est déjà à la dernière version.
trusktr

2
S'il ne manque aucun package, il vérifiera s'il peut utiliser les dernières versions des packages (y compris les dépendances des packages) répertoriés dans package.json. Donc, essentiellement, il mettra à niveau les packages si possible. Mais il ne se réinstallera pas. Si vous souhaitez le faire à l'aide de commandes, vous pouvez exécuter npm uninstall <package_name>pour désinstaller un package spécifique ou exécuter npm uninstallpour désinstaller tous les packages.
himanshu

1
J'ai essayé de faire juste npm uninstallsans spécifier de package mais cela génère une erreur.
trusktr

Avez-vous package.json dans le répertoire du dossier où vous avez exécuté cela? Si vous désinstallez le package global, vous devrez ajouter -g
himanshu

1
Le lien que vous fournissez est mort, pouvez-vous en fournir un nouveau? (J'ai trouvé cela mais je ne suis pas sûr qu'il soit acceptable de le changer)
Motti

64

La plupart du temps, j'utilise la commande suivante pour réaliser une réinstallation complète de tous les modules de noeud (assurez-vous que vous êtes dans le dossier du projet).

rm -rf node_modules && npm install

Vous pouvez également exécuter npm cache cleanaprès avoir supprimé le node_modulesdossier pour vous assurer qu'il n'y a pas de dépendances mises en cache.


48

npmmis à jour la commande CLI installet ajouté l' --forceindicateur.

npm install --force

L' argument --force(ou -f) forcera la npmrécupération des ressources distantes même si une copie locale existe sur le disque.

Voir npm install


Super, travaillez aussi avec 'git + github.com ...'!
Toni Bünter

12

Vous pouvez utiliser le module de réinstallation trouvé dans npm.

Après l'avoir installé, vous pouvez utiliser la commande suivante:

reinstall

La seule différence avec la suppression manuelle du node_modulesdossier et sa création npm installest que cette commande efface automatiquement le cache de npm. Ainsi, vous pouvez obtenir trois étapes en une seule commande.

upd: npx reinstall est un moyen d'exécuter cette commande sans installer globalement le package (uniquement pour npm5 +)


1
@ g00glen00b J'ai édité afin qu'il inclue maintenant des informations utiles sans hyperliens
Rob

@ g00glen00b C'est parfaitement bien; cela n'en fait pas un candidat à la suppression. Veuillez consulter cet article - En particulier, il répond aux réponses courtes avec un lien, à condition qu'il y ait des informations utiles (par exemple, le nom de la bibliothèque) lorsque le lien hypertexte est supprimé
Rob


1

Pour Windows, vous pouvez utiliser

(if exist node_modules rmdir node_modules /q /s) && npm install

qui supprime le node_modulesrépertoire et effectue npm installensuite. La suppression avant l'installation garantit que tous les packages sont réinstallés.


0

Suivez cette étape pour réinstaller les modules de noeud et les mettre à jour

fonctionne même si le dossier node_modules n'existe pas. exécutez maintenant la commande suivante de manière synchrone. vous pouvez également utiliser la "mise à jour npm" mais je pense que c'est la manière préférée

npm outdated // not necessary to run this command, but this will show outdated dependencies

npm install -g npm-check-updates // to install the "ncu" package

ncu -u --packageFile=package.json // to update dependencies version in package.json...don't run this command if you don't need to update the version

npm install: will install dependencies in your package.json file.

si vous êtes d'accord avec la version de vos dépendances dans votre fichier package.json, pas besoin de suivre ces étapes il suffit d'exécuter

 npm install
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.