web-dev-qa-db-fra.com

npm install vs. update - quelle est la différence?

Quelle est la différence pratique entre npm install et npm update? Quand devrais-je utiliser lequel?

467
Borek Bernard

Différence entre npm install et npm update traitement des versions de package spécifiées dans package.json :

{
  "name":          "my-project",
  "version":       "1.0",                             // install   update
  "dependencies":  {                                  // ------------------
    "already-installed-versionless-module":  "*",     // ignores   "1.0" -> "1.1"
    "already-installed-semver-module":       "^1.4.3" // ignores   "1.4.3" -> "1.5.2"
    "already-installed-versioned-module":    "3.4.1"  // ignores   ignores
    "not-yet-installed-versionless-module":  "*",     // installs  installs
    "not-yet-installed-semver-module":       "^4.2.1" // installs  installs
    "not-yet-installed-versioned-module":    "2.7.8"  // installs  installs
  }
}

Résumé : La seule grande différence est que un module déjà installé avec un versioning flou ...

  • est ignoré par npm install
  • se met à jour par npm update

En outre : install et update par défaut, gérer devDependencies différemment.

  • npm install va installer/mettre à jour devDependencies sauf si le drapeau --production est ajouté
  • npm update sera ignorer devDependencies sauf si le drapeau --dev est ajouté

Pourquoi utiliser npm install du tout?

Parce que npm install en fait plus lorsque vous cherchez à gérer vos dépendances dans package.json. Comme vous pouvez le voir dans npm install vous pouvez ...

  • installer manuellement les modules de noeuds
  • définissez-les comme global (ce qui les place dans le PATH du shell) à l'aide de npm install -g <name>
  • installer certaines versions décrites par les balises git
  • installer depuis une url git
  • forcer une réinstallation avec --force
599
xanderiel

npm install installe tous les modules listés dans le fichier package.json et leurs dépendances.

npm update met à jour tous les packages du répertoire node_modules et leurs dépendances.

npm install express installe uniquement le module express et ses dépendances.

npm update express met à jour le module express (à partir de [email protected], il ne met pas à jour ses dépendances).

Les mises à jour s'appliquent donc lorsque vous avez déjà le module et souhaitez obtenir la nouvelle version.

74
saeed

Dans la plupart des cas, cela installera la dernière version du module publié sur npm.

npm install express --save

ou mieux pour mettre à niveau le module vers la dernière version utilisée:

npm install express@latest --save --force

--save: Le paquet apparaîtra dans vos dépendances.

Plus d'infos: npm-install

45
jmav

De nombreuses distinctions ont déjà été mentionnées. En voici un de plus:

Si vous exécutez npm install en haut de votre répertoire source, différents scripts seront exécutés: prepublish, preinstall, install, postinstall. En fonction de l'utilisation de ces scripts, un npm install peut faire beaucoup plus de travail que simplement installer des dépendances.

Je viens d'avoir un cas d'utilisation où prepublish appellerait make et le Makefile aurait été conçu pour extraire des dépendances si le package.json était mis à jour. L'appel de npm install à l'intérieur de la Makefile aurait conduit à une récursion infinie, alors que l'appel de npm update fonctionnait correctement, l'installation de toutes les dépendances de sorte que la construction puisse continuer même si make était appelé directement.

8
MvG

npm update: installer et mettre à jour avec les derniers modules de noeuds contenus dans package.json

npm install: installe les modules de noeud définis dans package.json (sans mise à jour)

2
DSK