Facebook qui n’a pas dérogé à la règle a depuis longtemps adopté l’usage de npm pour le développement de ses projets JavaScript. Toutefois, la firme explique qu’elle a été confrontée à des problèmes impactant la cohérence, la sécurité et les performances du code à mesure que la taille de ses projets grandissait ainsi que le nombre d’ingénieurs travaillant sur les projets.
En effet, après avoir exécuté manuellement l’installation de npm, les ingénieurs ont noté que le gestionnaire de paquets fonctionnait correctement, mais affichait des pannes lorsqu’il tournait dans des environnements d’intégration continue qui nécessitent d’être exécutés dans un sandbox et hors ligne. Pour résoudre ce problème, les ingénieurs chez Facebook ont procédé, dans un premier temps, à la vérification de tous les modules node.js dans le dépôt.
Cela a fonctionné, mais des complications sont survenues en sorte que de simples opérations sont devenues difficiles à réaliser. Par exemple, effectuer de simples changements sur les modules node prenait toute une journée entière. Toujours en cherchant à régler les difficultés rencontrées, les ingénieurs de Facebook ont tenté de mettre à l’échelle le client npm en zippant le dossier entier des modules node, et en le chargeant sur le CDN interne de la firme en sorte que les ingénieurs puissent télécharger et extraire les fichiers dans le système d’intégration continue. Mais cela a entraîné un recours permanent à internet et surutilisation de la bande passante non seulement pour récupérer les fichiers, mais aussi pour les construire.
Pour résoudre définitivement tous ces problèmes, Facebook s’est tourné vers la mise en œuvre d’un nouveau gestionnaire de paquets dit plus fiable afin de gérer plus efficacement les dépendances. Cette solution se nomme Yarn et est le fruit de la collaboration entre les entreprises Exponent, Google et Tilde. Selon Facebook, ce gestionnaire de paquets comporte les mêmes fonctionnalités que les autres gestionnaires de paquets, mais est plus rapide, plus sûr et plus fiable.
« ;Avec Yarn, les ingénieurs ont toujours accès au registre npm, mais peuvent installer des paquets plus rapidement et gérer les dépendances de façon cohérente sur les machines ou dans des environnements hors ligne sécurisés ;», explique Facebook. La firme ajoute que « ;Yarn permet aux ingénieurs d’aller plus vite et avec confiance en utilisant le code partagé de sorte qu’ils puissent se concentrer sur ce qui importe — la conception de nouveaux produits et fonctionnalités ;».
En plus d’être rapide, Yarn est doté des fonctionnalités suivantes :
- Compatibilité avec les workflows npm et Bower et prise en charge du mélange de ces registres ;;
- Possibilité de restreindre les licences des modules installés et un moyen de fournir des informations de licence ;;
- Exposition d’une API JS publique stable avec la journalisation abstraite pour la consommation de cette dernière à travers des outils de construction ;;
- Lisible, minimal et belle conception de la sortie CLI.
Pour montrer l’utilité de Yarn, Facebook s’est livré à un petit test entre Yarn et npm sur React Native. Il en résulte que la cache est nettement plus rapide avec Yarn dans les différentes conditions des tests effectués. Facebook précise qu’elle utilise Yarn en production et confirme qu’il fonctionne très bien. Pour aider les autres développeurs à surmonter aisément les mêmes problèmes rencontrés par le réseau social et aussi pour encourager les développeurs à améliorer Yarn, Facebook annonce que Yarn est disponible sur GitHub sous licence open source.
Télécharger Yarn
Source : Facebook
Et vous ?
Que pensez-vous de ce nouveau gestionnaire de paquets JavaScript ;?
Pensez-vous qu’il pourra se faire une place à côté du très célèbre gestionnaire de paquets, npm ;?
Voir aussi
NodeSource dévoile N|Solid, une version de Node.js 4.0 orientée entreprise
La Rubrique Javascript, Forum JavaScript côté serveur, Cours et tutoriels JavaScript, FAQ de Javascript