Actuellement, Npm est le gestionnaire de paquet le plus populaire dans l’écosystème Javascript. Facebook a publié un nouveau gestionnaire, Yarn. Ce dernier apporte quelques fonctionnalités qui deviennent vite indispensables.

Installation offline

A l’installation d’un paquet, Yarn conserve une copie du paquet original. Il est alors possible de réinstaller ce même paquet, dans la même version, en étant offline.

NPM, local, tarball…

Yarn profite de npm et permet d’en installer n’importe quel paquet. Par exemple

yarn add koa 


Mais il est aussi possible par exemple, d’installer un paquet depuis un répertoire local de votre machine – ce qui simplifie énormément le travail sur des paquets personnels.

yarn add file:/chemin/de/votre/source 

Et même depuis une taarball hébergée sur le web, ou bien un repo Github:

yarn add <git remote-url> yarn add git+ssh://git@github.com/tilap/repository-name.git 
yarn add <https://domain.tld/package.tgz> 

Plus besoin de Shrinkwrap

Tout projet javascript fini par accumuler des paquets, aux multiples versions, qui ne cessent de changer. Npm propose une option nommée Shrinkwrap pour vérouiller les versions de chaque paquet utilisés sur un projet. Yarn propose une fonctionnalité identique, en allant plus loin. Au même titre que le fichier composer.lock de Composer en PHP, Yarn créé un fichier yarn.lock systématiquement dans votre projet et assure un maintient des versions installée sans avoir à penser à utiliser Shrinkwrap.

Lister les licenses simplement

Si vous souhaitez vous assurer que la License de votre paquet respecte les licenses de ses dépendances ou si vous travaillez dans un domain légal particulier (entreprise), vous pouvez lister facilement l’ensemble des licenses de vos dépendances (directes et héritées) avec la commande

yarn licenses ls

Optimisé

Au delà de tous ces avantages indéniables, Yarn est aussi beaucoup plus rapide (parallélisation des paquets installés), et les paquets installés auront une arborescence identique d’une machine à une autre, ce que npm ne permettait pas.

En fait, on se demande comment on faisait avant…