Facebook a lancé un nouveau produit à destination des développeurs, Yarn. Il s’agit d’un client open source npm alternatif pour JavaScript. L’éditeur promet notamment un temps d’installation nettement plus court.
La société de Mark Zuckerberg a pour habitude de développer de nombreux outils pour ses propres besoins. Certains sont proposés en libre accès par la suite, voire en open source. C’est le cas de Yarn, qui dispose pour le coup d’un dépôt GitHub dédié.
La même chose, en plus rapide
Concurrent du client npm officiel, Yarn est bien sûr compatible avec ce type de paquets, le but étant de faire la même chose, mais plus rapidement. Selon Facebook, le gain peut être très important : là où l’installation classique d’un paquet npm prendrait plusieurs minutes, Yarn peut le réaliser en quelques secondes. Tout dépend en fait de la taille du paquet. L’approche retenue pour l’installation diffère, Facebook expliquant que sa solution se base sur les lockfiles et un algorithme déterministe. La procédure d’installation maintient la même structure répertoires node_modules, gardant intactes les dépendances.
En pratique, chaque paquet téléchargé est automatiquement mis en cache. Les opérations sont parallélisées autant que possible et l’ensemble du processus se veut également plus fiable. Si un paquet a déjà été récupéré au moins une fois, il pourra être réinstallé autant que nécessaire, Yarn n’ayant plus besoin de connexion après la mise en cache. Les flux npm et bower sont tous deux gérés, de même que les registres mélangés.
À l'aise avec les paquets publics, moins avec les privés
Facebook indique utiliser Yarn en production pour ses propres besoins. Il n’est donc pas étonnant que l’outil soit accompagné de fonctionnalités permettant de réaliser des installations plus ou moins précises. Il est par exemple possible de restreindre les licences des modules installées, ou d’exporter les informations sur ces licences. Une API est exposée publiquement et son utilisation doit être assez simple pour que les autres outils puissent s’en servir.
Point intéressant, l’équipe de développement de npm a souhaité la bienvenue à Yarn, en tant que nouvel arrivant dans la cour des clients npm open source. Elle souligne cependant un détail important : Yarn « fonctionne apparemment très bien avec les paquets publics », mais pas avec les paquets privés. Facebook a été averti, l’éditeur travaillant sur un correctif.
Disponible sur tous les systèmes
L’installation de Yarn peut se faire de différentes manières, selon le système que l’on utilise. Pour Windows, le site officiel met à disposition un fichier MSI, sur lequel il suffira donc de double-cliquer après téléchargement. Un paquet Chocolatey sera prochainement ajouté. Sous macOS et Linux, la récupération pourra se faire via une ligne dans le terminal. Il suffit de se rendre sur la page liée aux installations pour copier/coller les commandes.
Commentaires (36)
#1
Si ça pouvait aussi donner un moyen simple de partager un paquet sur plusieurs projet sans passer par un abonnement npm ça serait cool aussi, parce que j’ai pas l’impression que les mecs de chez npm fassent beaucoup d’effort là-dessus. :(
#2
Très très cool, mais encore loin d’être prêt pour la production, j’ai rencontré pas mal de bugs personnellement
#3
Quel nom mal choisi ! YARN c’est le moteur d’exécution de Hadoop.
#4
Tu peux préciser dans ton package json des dép qui sont installées via un répo git. Du coup, c’est déjà disponible depuis pas mal de temps
#5
https://xkcd.com/927/
#6
Ah noter que Yarn n’a pas éte développé uniquement par Facebook, mais aussi par Google, Exponent et Tilde.
#7
Perdu " />
Ici on garde le même principe que le npm, c’est juste un outil supplémentaire…
#8
#9
Vivement un 16ème gestionnaire de paquet, un 36ème système de build, un 42ème pré/post processeur CSS et un 158ème langage à transpiler.
Y’a à pas dire, le développement web en 2016 ça vend du rêve " />
#10
#11
J’étais passé à côté de ça, merci!
#12
#13
Dans ma boite nous utilisons principalement npm et bower, du coup si on peut avoir un seul gestionnaire de packet au lieu de deux, je suis preneur :)
#14
#15
#16
C’est aussi poussé par Google si je dis pas de bêtise.
#17
jspm?
#18
Je ne m’attendais surement pas à des trolls de si bas-étage, je dois te l’avouer ;)
#19
#20
#21
#22
#23
Blague à part, sans demander la cathédrale, je ne vois pas un bazar non plus.
Je vois un gros bordel, rempli de projets qui ne dépassent que rarement le statut d’alpha, des forks à tout va bien trop souvent injustifiés, et rien de bien sérieux pour qui travaille sur autre chose que du site web jetable.
#24
Tu peux toujours revenir à la base aussi hein. A coup de GIT, (vanilla) JS, Css et HTML.
Tu veux du support long et sûr sur un framework ? Va sur du payant/proprio comme ext-js.
Et là on ne parle que de frontend, parce qu’en backend des projets solides (libre et gratuit) il y en a pas mal…
#25
Perso on a lâché bower pour ne plus utiliser que npm. Ils se font très rare les paquets dispo seulement sur bower et au pire on peut pointer sur git ou les publier sur notre repo npm privé.
#26
#27
Bah non. le “standard’ ici étant la distribution / gestion de modules nodes, et que les deux outils sont entièrement compatible avec ce standard… je ne vois pas le problème.
Il n’y a pas de redéfinition du standard. C’est juste un outil.
C’est un peu comme s’il n’y avait qu’une seule marque de smartphone et que vous sortiez ce xkcd alors qu’ils utiliseraient tous les deux les normes standards en cours….
#28
Il n’y a que moi qui ne sait pas ce qu’est NPM ? Et pourtant je suis un lecteur assidu de NXI…
" />
#29
#30
#31
Non il n’a pas raison sur l’esprit (enfin dans ce contexte ci).
Ici on a un outil qui a des problèmes à gérer de gros projets : ils en ont développé un plus performant. le “standard” ici ne change pas, ils n’en ont pas créé de nouveau. Que les gens utilisent npm ou yarn, c’est comme choisir une marque de marteau pour enfoncer un clou… Bref, on a un outil de plus, qui fonctionne avec les standards et projets actuels. Bien.
Le xkcd : on a 14 standards, on veut en faire un 15eme pour ne plus en avoir qu’un seul utilisé -> 15 standards utilisés. Donc en gros avoir une 15eme génération de clou non compatible avec les anciens marteaux.
Situation bien différente.
#32
Bof, c’est vrai qu’il y a profusion de framework plus ou moins suivi. Mais tout de même : node (et les outils autour) sont relativement stables maintenant. Angular, React, bootstrap (je mélange tout " />) et même Jquery (" />) ont un support (et une communauté) assez importante pour pouvoir se permettre de les exploiter de façon pro.
Je pense aussi que maintenant que le HTML5 est arrivé, que ES6 est finalisé etc, les frameworks vont pouvoir se stabiliser pour quelques années.
#33
#34
Sauf qu’il n’y a rien de mal à créer des outils interopérables.
#35
#36
" />
" />
Je sais que Google existe, mais (note pour les rédacteurs de NXI) c’est toujours mieux d’ajouter un mot rapide dans l’article, voire un lien vers un article intéressant sur le sujet :) .