Connexion
Abonnez-vous

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

Un outil déjà utilisé en production

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

Le 13 octobre 2016 à 09h20

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)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar







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.


votre avatar

<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;

votre avatar







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.


votre avatar







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 ?


votre avatar







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=" />


votre avatar







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=" />


votre avatar

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.

votre avatar

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…

votre avatar

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

votre avatar







Jarodd a écrit :



https://xkcd.com/927/





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


votre avatar

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

votre avatar

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;

votre avatar







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;code.facebook.com Facebook



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


votre avatar







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=" />)


votre avatar

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.


votre avatar

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.

votre avatar







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


votre avatar

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

votre avatar

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

votre avatar

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

votre avatar

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

&nbsp;

votre avatar

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

votre avatar
votre avatar

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

votre avatar

Perdu <img data-src=" />

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

votre avatar







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


votre avatar

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=" />

votre avatar







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 ?



votre avatar

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

votre avatar







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.


votre avatar

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

votre avatar







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.


votre avatar







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 ?


votre avatar

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

votre avatar

jspm?

votre avatar

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

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

  • 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