Comment corriger l'erreur "npm WARN old lockfile The package-lock.json file was created with an old version of npm" ?

Quand vous travaillez avec NodeJS dans vos projets, il existe 2 fichiers indispensables à connaître : les fichiers "package.json" et "package-lock.json". Alors que le premier permet de paramétrer les librairies installées dans votre projet et la configuration, le deuxième est entièrement géré par NodeJS et votre gestionnaire de paquets (Yarn ou NPM). Il a connu différentes évolutions au fur et à mesure des versions de NodeJS, et vous pouvez vous retrouver avec le message suivant à cause de ces évolutions : "npm WARN old lockfile The package-lock.json file was created with an old version of npm". Il existe plusieurs solutions pour résoudre ce problème.

Vous avez tout d'abord la possibilité d'ignorer ce message. C'est un message d'avertissement, qui n'empêche pas l'installation des modules. Mais des problèmes peuvent survenir plus tard lors de l'utilisation du projet ou de son développement. Si aucun problème n'est survenu, vous pouvez alors indiquer à NPM de mettre à jour le fichier "package-lock.json". Utilisez la commande suivante, puis mettez à jour le dépôt ou le container Docker pour transmettre la correction aux autres personnes.

npm install --package-lock-only

Si vous devez vraiment utiliser une ancienne version de NPM, vous avez plusieurs solutions pour répondre à ce cas. Si vous vous situez dans une image Docker, vous pouvez installer la bonne version de NPM à partir de l'image, en précisant le numéro de version dans la commande de NPM.

// Installe NPM version 7 s'il est contenu dans l'image Docker
npm -g install npm@7.19.1

Une autre solution est d'utiliser NPX. Cet utilitaire, fourni directement avec NodeJS comme NPM, permet d'appeler des scripts conçus pour NodeJS. N'importe quelle commande peut être utilisée pour appeler une version plus ancienne de NPM, depuis une version plus récente. Il suffit d'indiquer "npm@" suivi du numéro de version à utiliser. La seule condition est d'avoir une version plus récente de NPM.

// Lance l'installation automatisée avec la version 6 de NPM, même avec une version plus récente
npx npm@6 ci

JavaScript