DEV Community

Barthez Kenwou
Barthez Kenwou

Posted on

Un tour sur les gestionnaires de paquets node: npm, yarn ou pnpm ?

Dans le monde du développement web, le javaScript dépuis son apparition en 1995, il a su faire ses preuves. Plus tard en 2009, Ryan Dahl a repris ce language et a fait en sorte qu’il puisse s’excécuter hors du navigateur: c’est l’avènement de Node JS. Pour pouvoir manipuler node.js avec toute sa puissance et ses avantages, il est crucial d’utiliser un gestionnaire de paquets qui est juste un outil qui facilite l’installation, la gestion et la mise a jour des bibliothèques et des modules javaScript dans un projet node.js. Il en existe plusieurs chacun avec ses propres caractéristiques, particularités et avantages. Parmi les plus populaires on trouve npm, yarn et pnpm; savoir lequel choisir peut faire une grande différence dans le flux de votre travail.

npm

npm (Node package manager) crée en 2010 par Isaac Z. Schlueter est le gestionnaire de paquets par défaut pour node. Il est installé automatiquement lorsqu’on télécharge node et il permet d’installer des paquets, de gérer les dépendances et meme exécuter les scripts dans un projet.

npm est très apprecié car il a un écosystème vaste et riche hébergeant des millions de paquets; permet de regrouper toutes les dépendances du projet dans un fichier appelé “package.json” situé à la racine du répertoire du projet, permet de personnaliser ses scripts et possède une grande communauté active.

Le gros problème avec npm c’est sa faiblesse dans l’installation et la sécurisation des paquets. En effets, à son initialisation dans le projet npm installe une pléthore de dépendances pas toujours nécessaire, c’est un gaspilage de la mémoire; on ne peut pas installer deux paquets à la fois, il faut attendre que la première installation soit terminée. D’autre part on note également le problème de sécurité et de conflits de dépendances.

Quelques commandes avec npm sont:
npm init #pour initialiser un projet
npm install nom_du_paquet #pour installer un paquet
npm uninstall nom_du_paqueet #pour desinstaller un paquet
npm update nom_du_paquet #pour mettre à jour un paquet
npm list #liste les paquets installé
npm run nom_script #pour executer un script

yarn

yarn est un concurrent et une altenative plus rapide, et plus fiable à npm crée par facebook en 2016 en réponse aux limitations rencontrées avec npm (notament à partir de la version 4).

Devant npm, yarn se revèle avec plusieurs avantages comme sa rapidité(installation parallèle) notament avec la possibilité de faire des requetes sur une architecture asynchrome; sa fiabilité car yarn assure plus de sécurité et de fiabilité de ses paquets à travers le fichier yarn.lock;

Yarn a à son tours son lot de caprices et de faiblesses. Par exemple son incompatibilité avec certains ecosystèmes ou outils le met souvent à l’écart de certains projets ou complexifie les configurations avant son utilisation, chose qui n’est pas toujours à la porté des nouveaux utilisateurs, yarn n’est pas très compatible avec npm; ceci est du au fait que les deux gestionnaire tente de sécuriser les dépendances avec les fichiers respectifs yarn.lock et package.lock. Par ailleur, du fait qu’il soit récent, yarn n’a pas encore un écosystem de plugins très riche(comparé a npm).

Quelques commandes avec yarn:
yarn init #pour initialiser un projet
yarn add nom_du_paquet #pour installer un paquet
yarn remove nom_du_paqueet #pour desinstaller un paquet
yarn upgrade nom_du_paquet #pour mettre à jour un paquet
yarn list #liste les paquets installé
yarn run nom_script #pour executer un script

Pnpm

pnpm(Performant npm) lancé en 2016 par Zoltan Kochan est également une alternative éfficace et optimale aux gestionnaire de paquets déjà existant. Juste après sa création pnpm est devenu très populaire du fait de ses performances et de son éficacité considéré comme supérieur à ceux de yarn.

pnpm se vente avec plusieurs qualités, notament une installation optimisée des paquets. En effet, l’approche de pnpm est très rapide et très économique pour la mémoire; au lieu d’installer directement tous les paquets dans le dossier “node_modules” comme le fait npm, il le sauvegarde dans le cache de la machine et ce n’est que lorsqu’on a besoin d’un paquet que pnpm va dans le cache le récupéré. ceci nous permet aussi de pouvoir télécharger nos paquets et extensions meme n’étant pas connecté à internet. cette approche va resoudre énormément de problèmes que les autres gestionnaires de paquets ignoraient ou resolvait partiellement. il s’agit par exemple de l’utilisation du disque, la compatibilité avec npm, la vitesse d’installation, l’isolation des dépendances qui réduit les conflits des versions, meilleur organisation des dépendances…

Etant donné que pnpm est récent, il souffre tout comme yarn d’un écosysteme de plugins très limité. Par ailleur la documentation de pnpm et sa communauté sont en pleine construction.

Quelques commandes avec pnpm:
pnpm init #pour initialiser un projet
pnpm add nom_du_paquet #pour installer un paquet
pnpm remove nom_du_paqueet #pour desinstaller un paquet
pnpm update nom_du_paquet #pour mettre à jour un paquet
pnpm list #liste les paquets installé
pnpm run nom_script #pour executer un script

Choix du bon gestionnaire de paquets

le choix du meilleur gestionnaire de paquet reste la problématique de notre dissertation on ne pouvait pas finir sans faire un tour dessus. On a un peut parcouru les trois gestionnaires de paquets les plus utilisées, chacun avait ses qualités et ses limites, lequel choisir pour son projet ?

le choix du bon gestionnaire de paquets va dépendre de plusieurs criptères comme:

la Taille du projet: pour de très grand projets, optez pour pnpm semble pour moi la solution la plus économique en termes de mémoire et la plus optimale sur plusieurs points.

les préférences de l’équipes: car en effet il peut arriver qu’on ne taf pas seul sur le projets et que pour x ou y raisons les autres menbres du groupe n’adhèrent pas au meme choix du gestionnaire de paquets, tout devient alors contraignant et comme on l’a vu plus haut il y’ a des gestionnaires qui ne sont pas très cohérent ensemble.

les Besoins spécifiques: car chaque gestionnaire de paquets à ses particularité qui selon les cas peut vous séduire.

Nous aimerons que vous partagez avec nous, vos expériences sur les gestionnaires de paquets que vous utilisez ou que vous preferez pour vos projets. N’hésiter pas à en discuter avec nous, les commentaires sont là pour ça.

Pour en savoir plus, visitez les sites officiels de ces gestionnaires de paquets et explorez leurs documentations pour découvrir toutes leurs fonctionnalités. voici les sites: javaScript, node.js, npm, yarn, pnpm.

Top comments (0)