Yarn est l'un des principaux gestionnaires de paquetsJavaScript[2],[3], développé en 2016 par Facebook (maintenant Meta) pour l'environnement d'exécution JavaScriptNode.js. Une alternative au gestionnaire de packages npm, Yarn a été créé en collaboration avec Facebook, Exponent (maintenant Expo.dev), Google et Tilde (la société derrière Ember.js) pour résoudre les problèmes de cohérence, de sécurité et de performances avec de grandes bases de code[4].
Fonctionnalité
Les utilisateurs peuvent écrire leurs propres plugins pour Yarn.
Contraintes
Les contraintes de Yarn permettent aux utilisateurs d'appliquer des règles pour leurs dépendances ou leurs champs de manifeste dans des espaces de travail délimités.
Cache hors ligne
Les packages téléchargés sont mis en cache et stockés dans un seul fichier.
Plug'n'Play
Plug'n'Play permet aux utilisateurs d'exécuter des projets Node sans dossier node_modules, en définissant la manière ou l'emplacement pour résoudre les fichiers de package de dépendances avec le fichier Plug-n-Play-control. Cette fonctionnalité vise à corriger une architecture node_modules mal structurée et résultant en un temps de démarrage de l'application Node.js plus rapide.
Plugins
Les plugins peuvent ajouter de nouveaux résolveurs, récupérateurs, éditeurs de liens, commandes, et peuvent également s'inscrire à certains événements ou être intégrés les uns aux autres. La plupart des fonctionnalités de Yarn sont implémentées via des plugins, y compris yarn add et yarn install, qui sont également des plugins préinstallés.
Protocoles
Les utilisateurs peuvent définir quel protocole sera utilisé pour résoudre certains packages, par exemple, le protocole git est utilisé pour télécharger un package public à partir d'un référentiel Git, et le protocole patch est utilisé pour créer une copie corrigée du package d'origine.
Flux de travail de publication
Release Workflow met automatiquement à niveau les packages relatifs parmi les espaces de travail monorepos lorsque les packages racine sont mis à niveau.
Espaces de travail
Les espaces de travail permettent à plusieurs projets de travailler ensemble dans le même référentiel et d'appliquer automatiquement les modifications à d'autres parents lorsque le code source est modifié, permettant l'installation de plusieurs packages en une seule passe en exécutant la commande d'installation une seule fois.
Zéro installation
Les zéro-installations résolvent les besoins d'installation de packages quand les packages doivent être installés lorsque les codes viennent d'être récupérés en local.
Comparaison avec npm
Yarn peut installer des packages à partir du cache local[5].
Yarn lie fortement les versions du package.
Yarn utilise la somme de contrôle pour garantir l'intégrité des données, tandis que npm utilise SHA-512 pour vérifier l'intégrité des données des packages téléchargés[6].
Yarn installe des packages en parallèle, tandis que npm installe un package à la fois.