Les gestionnaires de paquets pour Node : npm, yarn, pnpm

Articlejavascript

Publié par le (8393 lectures)

npm node yarn

Pour évoluer dans l'univers du développement JavaScript avec Node, les gestionnaires de paquets les plus courants sont :

Le choix parmi ces outils dépend de vos préférences personnelles et des quelques particularités affichées par chacun d'entre eux notamment côté performance. Vous êtes parfaitement libre de changer de gestionnaire de paquets mais si vous collaborez avec d'autres personnes, il vaut mieux harmoniser les pratiques notamment vis-à-vis du fichier de lock (verrou) qui décrit exactement l'arbre des dépendances installées.

Tous utilisent les mêmes concepts, un fichier package.json à la racine de votre projet qui liste les dépendances et leurs versions, un fichier de lock qui leur est propre, et des commandes d'installation, mise à jour, suppression, exécution de modules ou de scripts, etc.

npm

npm est le gestionnaire de paquets historique (depuis 2010), fourni "par défaut" avec Node. C'est le plus connu, et souvent celui avec lequel on trouve le plus d'exemples dans les documentations et tutoriels. Il fonctionne en ligne de commande et télécharge les dépendances d'un projet depuis un registre consultable également depuis le site web www.npmjs.com

La commande la plus connue est certainement install pour ajouter un paquet à un projet et le mémoriser dans le fichier package.json : npm install react par exemple.

npm

npm est lui-même écrit en JavaScript, et son nom ne provient initialement pas de l'abréviation de Node Package Manager qui est désormais adoptée de fait, mais d'un outil bash qui l'a inspiré, lui-même nommé pm abréviation de pkgmakeinst. Ainsi npm peut signifier new pm ou node pm. Depuis 2020, npm fait partie de GitHub.

Le fichier de lock est package-lock.json et la commande pour exécuter un paquet dynamiquement est npx.

yarn

yarn, développé initialement par Facebook (Meta) en 2016, est un gestionnaire alternatif, conçu dans l'idée d'être plus rapide : il utilise un cache local pour stocker les paquets déjà téléchargés, ce qui permet d'éviter des téléchargements supplémentaires. Il évite également les problèmes de dépendances en garantissant que les paquets sont installés dans un ordre déterminé, ce qui évite les erreurs d'installation en cas de dépendances croisées.

Son nom signifie en quelque sorte pelotte de fil, et devait être initialement kpm pour kittens package manager (où kittens se traduit par chatons), il a d'ailleurs conservé cette idée dans son logo.

Yarn

yarn utilise aussi un algorithme de gestion de versions qui peut détecter les conflits de versions plus rapidement et résoudre les problèmes de dépendance de manière plus efficace que npm. Ses commandes sont cenées être plus intuitives et simples car quelque peu "raccourcies".

Le fichier de lock est yarn.lock et la commande pour exécuter un paquet dynamiquement est yarn dlx.

pnpm

pnpm dont le nom provient de performant npm est encore un autre gestionnaire de paquets pour Node.js qui se concentre, entre autres, sur la performance et l'efficacité en utilisant un système de stockage partagé pour les paquets : une seule copie d'un paquet peut être partagée entre plusieurs projets, réduisant ainsi l'utilisation de l'espace disque.

pnpm

En réalité, il stocke les paquets dans un espace global et crée des "liens" (hard links) vers eux depuis le dossier node_modules de chaque projet. Sous Linux ce sont des liens, sous Windows c'est un peu plus particulier et cela passe par des jonctions. On a donc l'impression que le poids de node_modules est semblable mais en réalité il ne faut que compter l'espace mobilisé dans l'espace global. Par ailleurs il stocke tous les paquets "à plat" au même niveau, et utilise les liens pour créer leur arborescence.

pnpm se dit 2 fois plus rapides que ses concurrents, il parallélise la recherche de paquets, les téléchargements et les installations : testez-le vous ne serez sûrement pas déçu(e).

Pour utiliser pnpm à la place de npm, vous devez d'abord l'installer, c'est rapide et simple. On peut même l'installer via npm lui même avec npm install -g pnpm. Il ne vous reste plus qu'à le remplacer dans vos commandes habituelles, telles que pnpm install, pnpm update.

Le fichier de lock est pnpm-lock.yaml et la commande pour exécuter un paquet dynamiquement est pnpm dlx.

Commentaires

Pour pnpm, non seulement une seule copie est partagée, mais encore, pour un même package le système prend aussi en compte les changements de versions : s'il y a une ligne de code seulement de changée pnpm fera un lien symbolique ne prenant en compte que cette ligne de code.

Commenter

Vous devez être inscrit et identifié pour utiliser cette fonction.

Connectez-vous (déjà inscrit)

Oubli de mot de passe ? Pas de panique, on va le retrouver

Pas encore inscrit ? C'est très simple et gratuit.