Yarn, gestionnaire de paquets pour Node.js

Le 25/10/2016

Dans Développement

Aujourd'hui, le BlogDuWebdesign vous propose de faire le point sur le petit nouveau de la famille des gestionnaires de paquets pour Node.js : Yarn.

Qu'est-ce qu'un "package manager" ?

Je ne pense pas que ce paragraphe serve à beaucoup d'entre vous en 2016, mais dans le doute, une petite explication ne fera pas de mal.

Un package manager, ou gestionnaire de paquet en français est un outil permettant de simplifier la gestion (installation, mise à jour, changement de version, etc.) des dépendances de vos projets ou systèmes.

C'est souvent le programme central des distributions Linux (apt-get pour Debian, RPM pour Red-Hat, Pacman pour Arch, …), et il est très facile de voir les stores Windows, Apple ou Android comme des gestionnaires de paquets.

Pour le cas qui nous intéresse (le développement web), la plupart des gestionnaires de paquets se sont construits sur le modèle de Bundler, le gestionnaire de paquets pour Ruby. Leur fonctionnement est généralement tout le temps le même : un simple fichier texte recense toutes les dépendances de votre projet ainsi que leurs versions. Pour l'installation d'une nouvelle machine de développement ou le déploiement de votre projet en production, il ne vous suffit donc que d'une seule commande (ex : npm install).

Tous les langages (ou presque) possèdent le leur (npm pour Node Js, Composer pour PHP, Bower pour les ressources front-end, etc.) et si vous n'en utilisez pas encore (que vous soyez intégrateur ou développeur) je ne peux que vous conseiller d'y jeter un coup d'œil, c'est sans doute le meilleur endroit ou investir votre temps de formation !

Yarn, gestionnaire de paquets pour Node.js

Bien que pour la grande majorité d'entre nous, npm est tout à fait suffisant pour notre travail avec Node.js, il faut reconnaître que ce package manager a quelques défauts assez gênants (comme sa lenteur catastrophique, par exemple).

Npm : gestionnaire de paquets

Pour adresser une solution à tous ces problèmes, certaines petites entreprises (Facebook et Google entre autres) ont décidé de fournir un nouveau package manager pour Javascript : Yarn.

Alors, pour commencer, rassurez-vous, Yarn n'est pas là pour tout changer, et reste compatible avec une grosse quantité de l'infrastructure actuelle : les dépôts restent identiques, et vos fichiers packages Json restent compatibles sans avoir à faire le moindre changement. La seule "pièce" qui change dans l'engrenage est l'outil CLI, et comme vous allez le voir cela suffit à corriger bon nombre de problèmes.

Pourquoi utiliser Yarn ?

Pour commencer, Yarn est plus rapide, beaucoup plus rapide : 40% en moyenne. Il semblerait que plus le nombre de dépendances installées soit grand, moins la différence soit flagrante, mais Yarn reste plus rapide dans tous les cas.

Ensuite, Yarn possède un lockfile au fonctionnement exactement identique au fichier bundle.lock de bundler. Pour comprendre ce point, il faut savoir que les numéros de version du fichier package.json ne sont pas forcément "fixes". Ils peuvent par exemple exprimer "n'importe quelle version au-dessus de la version 3". Le problème avec ce fonctionnement est que nous pouvons nous retrouver avec deux machines avec des dépendances différentes, ce qui est prône aux bugs.

Pour corriger cela, Yarn met à jour un fichier avec des numéros de versions fixes : yarn.lock. De cette manière, il sera toujours possible d'installer exactement les bonnes versions de toutes vos dépendances.

Enfin, et c'est pour moi un des points les plus agréables : Yarn est compatible avec npm ET avec bower. Plus besoin d'avoir deux gestionnaires de paquets par projet, vous pouvez tout manager depuis Yarn !

Pour finir, sachez qu'il existe d'autres petits goodies : l'affichage est bien moins verbeux, Yarn peut fonctionner hors ligne, etc. Ces points ne changeront pas vraiment votre vie, mais sachez au moins qu'ils existent.

Installer Yarn

L'installation de Yarn dépend de votre plateforme.

Sous Linux, vous aurez à ajouter un dépôt puis l'installer avec votre gestionnaire de paquets.
Pour macOS, l'installation passera par Homebrew, comme souvent.
Enfin pour Windows, vous pourrez retrouver un installateur sur le site de Yarn, où l'installer à travers chocolatey.

Pour toutes les informations, fichiers et lignes de commandes, je vous propose d'aller faire un tour sur la page d'aide à l'installation de Yarn.