Facebook officialise Yarn, un client npm open source qui se veut rapide

Facebook officialise Yarn, un client npm open source qui se veut rapide

Un outil déjà utilisé en production

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

13/10/2016 3 minutes
36

Facebook officialise Yarn, un client npm open source qui se veut rapide

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.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

La même chose, en plus rapide

À l'aise avec les paquets publics, moins avec les privés

Disponible sur tous les systèmes

Fermer

Commentaires (36)


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. :(


Très très cool, mais encore loin d’être prêt pour la production, j’ai rencontré pas mal de bugs personnellement


Quel nom mal choisi ! YARN c’est le moteur d’exécution de Hadoop.

 


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


Ah noter que Yarn n’a pas éte développé uniquement par Facebook, mais aussi par Google, Exponent et Tilde.


Perdu <img data-src=" />

Ici on garde le même principe que le npm, c’est juste un outil supplémentaire…








iRyusa a écrit :



Tu peux préciser dans ton package json des dép qui sont installé via un répo git. Du coup, c’est déjà disponible depuis pas mal de temps





+1



dans ton package.json, tu ajoutes juste les denpendencies avec une syntaxe du genre:



“package-name”: “git://github.com/user/project.git#commit-ish”

“package-name”: “git+ssh://user@hostname:project.git#commit-ish”

“package-name”: “git+ssh://user@hostname/project.git#commit-ish”

“package-name”: “githttp://user@hostname/project/blah.git#commit-ish”

“package-name”: “githttps://user@hostname/project/blah.git#commit-ish”





la doc



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&nbsp;<img data-src=" />








Zed-K a écrit :



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 <img data-src=" />





C’est quoi le problème ?

T’es au courant que personne ne t’oblige à tous les connaître et/ou les utiliser ?




J’étais passé à côté de ça, merci!








brazomyna a écrit :



C’est quoi le problème ?

T’es au courant que personne ne t’oblige à tous les connaître et/ou les utiliser ?





Certains employeur ou tout simplement dans la recherche d’emploi où il va toujours te manquer une techno ou 2 pour être retenu… &nbsp;Le vrai full stack n’est plus qu’une légende.



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 :)








Krogoth a écrit :



Certains employeur ou tout simplement dans la recherche d’emploi où il va toujours te manquer une techno ou 2 pour être retenu…  Le vrai full stack n’est plus qu’une légende.







Bah en même temps si tu tombes sur des employeurs débiles qui rejettent un CV d’un dev parce qu’il manque un truc sur la liste, j’ai envie de dire que c’est une bonne chose de ne pas être retenu, ça t’évitera de bosser avec des cons ;)



Sinon c’est quoi un vrai dev full stack? Effectivement si pour toi c’est quelqu’un qui maîtrise absolument toutes les problématiques possibles dans le monde du logiciel alors ça n’existe pas et ça n’a jamais existé. Par contre si tu parles de quelqu’un qui a des connaissances suffisantes et une bonne capacité d’adaptation pour intervenir à tous les niveaux sur un projet de dev je vois pas en quoi c’est impossible.









jojofoufou a écrit :



Très très cool, mais encore loin d’être prêt pour la production, j’ai rencontré pas mal de bugs personnellement





C’est du Javascript, tu t’attendais à quoi ?



C’est aussi poussé par Google si je dis pas de bêtise.


jspm?


Je ne m’attendais surement pas à des trolls de si bas-étage, je dois te l’avouer ;)








gogo77 a écrit :



Bah en même temps si tu tombes sur des employeurs débiles qui rejettent un CV d’un dev parce qu’il manque un truc sur la liste, j’ai envie de dire que c’est une bonne chose de ne pas être retenu, ça t’évitera de bosser avec des cons ;)





+1





Sinon c’est quoi un vrai dev full stack? Effectivement si pour toi c’est quelqu’un qui maîtrise absolument toutes les problématiques possibles dans le monde du logiciel alors ça n’existe pas et ça n’a jamais existé. Par contre si tu parles de quelqu’un qui a des connaissances suffisantes et une bonne capacité d’adaptation pour intervenir à tous les niveaux sur un projet de dev je vois pas en quoi c’est impossible.



+2



Pas mieux <img data-src=" />



Un développeur c’est pas quelqu’un qui maîtrise un langage ou une techno ; c’est quelqu’un qui maîtrise les concepts du langage/de la techno.









brazomyna a écrit :



C’est quoi le problème ?

T’es au courant que personne ne t’oblige à tous les connaître et/ou les utiliser ?





C’est un problème d’espérer pouvoir bosser avec des technos dont la durée de vie dépasse la semaine ?

De souhaiter travailler avec des outils matures et un minimum pérenne ?









Zed-K a écrit :



C’est un problème d’espérer pouvoir bosser avec des technos dont la durée de vie dépasse la semaine ?

De souhaiter travailler avec des outils matures et un minimum pérenne ?







Il y en a dans le lot ; si c’est ton critère principal, choisis celles les plus populaires et/ou les plus supportées par la communauté et/ou des entités connues et reconnues.



D’autres auront peut-être eux aussi leurs propres critères, différents des tiens ; la diversité des solutions apporte globalement une meilleure réponse à la diversité des besoins, les tiens y compris. <img data-src=" />









brazomyna a écrit :



Il y en a dans le lot&nbsp;





Par simple curiosité, tu pense auxquelles ?

Les technos de Google, Facebook, MS ou Apple, abandonnées aussi vite qu’elles sont adoptées ?

jQuery ?&nbsp;<img data-src=" />



Blague à part, sans demander la cathédrale, je ne vois pas un bazar non plus.

&nbsp;

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.


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…


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é.








Jarodd a écrit :



https://xkcd.com/927/





Ni plus, ni moins&nbsp;<img data-src=" />



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….


Il n’y a que moi qui ne sait pas ce qu’est NPM ?&nbsp;Et pourtant je suis un lecteur assidu de NXI…

&nbsp;

<img data-src=" />&nbsp;








CryoGen a écrit :



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….





Rhalalalala, la lettre et l’esprit de la lettre. T’as très bien compris ce que ça voulais dire, et il a raison sur l’esprit. Je te rappelle que FB a tenté la même chose coté serveur :&nbsp;



&nbsp;https://code.facebook.com/posts/264544830379293/hack-a-new-programming-language-…



encore un truc de plus qui fait la même chose que les 14 précédents. Hip Hop&nbsp;<img data-src=" />









CryoGen a écrit :



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…





Indeed, c’est juste dommage de se dire que si l’on veut un minimum de stabilité, il faut soit se priver d’outils soit se tourner vers du proprio.

&nbsp;

Je ne sais pas si c’est dû à la popularité subite (et un brin délirante àmha) du Javascript, mais l’actualité dans le domaine ressemble à un concours de hipsters réinventant la roue chaque semaine.



Et je parlais bien du front en effet, niveau backend on a (heuresement) des outils bien plus matures.

(ce qui ne m’empêche pas par ailleurs de jouer avec Node de temps à autres, je suis pas sectaire&nbsp;<img data-src=" />)



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é -&gt; 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.



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 <img data-src=" />) et même Jquery (<img data-src=" />) 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.








CryoGen a écrit :



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é -&gt; 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.





alors remplace le mot standard par outil dans la planche. C’est bien exactement la même chose ;)



Sauf qu’il n’y a rien de mal à créer des outils interopérables.








OlivierJ a écrit :



Il n’y a que moi qui ne sait pas ce qu’est NPM ? Et pourtant je suis un lecteur assidu de NXI…

 

<img data-src=" />





Node Package Manager (je crois) un gestionnaire de paquets javascript (pour les maj etc), de ce que j’en ai compris.



<img data-src=" />

<img data-src=" />

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 :) .&nbsp;

&nbsp;