Il est assez facile de perdre le fil des packages que vous installez avec NPM et l'option -g. Les dépendances sont en effet installées à l'échelle de votre système mais ne sont pas "visibles" à proprement parler. De ce fait, on ne pense pas toujours à faire le ménage dans celles que l'on n'utilise plus et à mettre à jour celles que l'on utilise.

Voici donc quelques astuces qui devraient vous être utile. La plupart fonctionnent aussi pour les dépendances locales. Il suffit de retirer l'option -g.

Lister les packages globaux

$ npm list -g --depth=0

Lister les packages qui peuvent être mis à jour

$ npm -g outdated

Vous devriez obtenir un tableau de ce type :

Package          Current  Wanted  Latest  Location
gulp               3.9.1   3.9.1   4.0.0
redis-commander    0.4.5   0.4.5   0.6.2
svgo               0.7.2   0.7.2   1.1.1
uglifycss         0.0.27  0.0.27  0.0.29

Par défaut, NPM ne mettra jamais automatiquement à jour un package dans une version non compatible avec votre version actuelle. Pour ce faire, il utilise le semantic versionning.

On peut résumer ça comme suit :

  • Si la version actuelle est supérieure ou égale à 1.0.0, NPM ne mettra jamais à jour vers une version dont le chiffre MAJOR (le premier) est supérieur.
  • Si la version actuelle est inférieure à 1.0.0, généralement pour les bêta, NPM ne mettra jamais à jour vers une version dont le chiffre MINOR (le second) est supérieur.

La version que NPM installera en cas de npm -g update est indiquée dans la colonne Wanted.

Mais alors comment mettre à jour vers la toute dernière version ?

Installer la dernière version

Pour commencer, prenez bien le temps de vérifier que les nouvelles versions majeures n'introduisent pas de changements importants (breaking changes) qui pourraient vous poser problème.

En local c'est assez facile, il suffit de modifier le fichier package.json qui doit se trouver à la racine de votre projet.

En global, il faut mettre à jour chaque dépendance une à une en spécifiant explicitement que l'on souhaite la dernière version.

$ npm install -g gulp@latest
$ npm install -g redis-commander@latest
$ npm install -g svgo@latest
$ npm install -g uglifycss@latest

Source