Logo Jetdev
Logo Jetdev
Edit Content

Démystifions le package-lock.json

Le fichier package-lock.json se situe à la racine de votre projet, aux côtés de son compagnon fidèle, le package.json.

À quoi sert-il?

Avant d’en comprendre l’utilité, il est essentiel de saisir ce qu’est le package.json. Ce fichier JSON regroupe diverses propriétés définissant votre application.

Voici un exemple typique de package.json que vous rencontrerez souvent :

Concentrons-nous sur les propriétés dependencies et devDependencies.

dependencies: Il s’agit d’un objet contenant les bibliothèques nécessaires au fonctionnement de votre application.

devDependencies: Il s’agit d’un objet rassemblant les bibliothèques nécessaires uniquement pendant le développement.

Dans notre cas, nous voulons que NPM récupère la bibliothèque Express pour créer une API. Nous avons également besoin de la bibliothèque Nodemon pour faciliter le développement avec son système de rechargement à chaud. Comme il s’agit d’une bibliothèque utilitaire non nécessaire dans la version finale de l’application, nous la plaçons dans la section devDependencies.

Lorsque vous exécutez la commande npm install, toutes les dépendances listées dans package.json sont téléchargées depuis le registre NPM vers le dossier node_modules à la racine de votre projet.

Une fois l’installation terminée, vous pouvez utiliser ces bibliothèques dans votre application.

Parlons maintenant du package-lock.json 🕵️

Lorsque vous modifiez vos dépendances et que vous utilisez npm clean-install, npm utilise le package-lock.json pour optimiser la gestion des dépendances. Vous avez peut-être remarqué que l’installation de node_modules peut prendre pas mal de temps et de ressources. Afin d’éviter cela lors des prochaines installations, npm utilise package-lock.json pour conserver une trace de l’arbre des dépendances de votre application (node_modules). Il détermine s’il est nécessaire de mettre à jour, ajouter ou supprimer une dépendance.

Dans le package-lock.json ci-dessus, vous pouvez remarquer une propriété integrity dans les objets express et nodemon. Il s’agit d’un hachage permettant de vérifier l’intégrité de votre dépendance. S’il détecte une anomalie, il réinstallera la dépendance, sinon, il ne fera rien.

De plus, il joue un rôle crucial lorsque votre code est destiné à être partagé avec d’autres développeurs. Lorsque votre projet est installé sur une autre machine ou sur vos environnements d’intégration continue, package-lock.json garantit la reproduction du même arbre de dépendances que celui de votre machine.

Schéma récapitulatif

Faut-il commit le package-lock.json sur Git?

La réponse est évidemment « OUI ». Cependant, soyez prudent, car si vous modifiez le package-lock.json, cela impactera l’arbre de dépendances de toutes les personnes qui travailleront sur le projet.

Vous avez peut-être déjà été confrontés à une pile d’erreurs lors de l’installation des dépendances en arrivant sur un projet existant. Vous pourriez être tentés de supprimer le package-lock.json et de relancer l’installation. Cela résoudra peut-être le problème temporairement, jusqu’à ce que quelqu’un d’autre modifie le package-lock.json. Je ne vous conseille donc pas de le faire. Au lieu de cela, assurez-vous de suivre le README du projet et vérifiez que vous avez la même version de Node.js et npm que les autres personnes travaillant sur le projet.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *