Yarn est un client npm open-source développé par Facebook qui améliore de nombreux aspects du client npm standard. Dans ce didacticiel, je me concentrerai sur les six principales fonctionnalités qui rendent Yarn génial:
L'une des revendications de Yarn est sa rapidité comparée au client npm standard. Mais à quelle vitesse est-ce? Dans une référence récente, Yarn était deux à trois fois plus rapide que npm. La référence a synchronisé l’installation de React, Angular 2 et Ember. C’est un très bon test pour un gestionnaire de paquets car chacun de ces frameworks tire un tas de dépendances et représente une part importante des dépendances d’une application Web réelle..
Ajoutons un autre point de données et vérifions nous-mêmes en installant une application create-rea-app utilisant à la fois fil et npm. Voici l'installation utilisant du fil:
$ yarn global add créer-réagir-app - préfixe / usr / local yarn global v0.27.5 warning package.json: aucun champ de licence avertissement aucun champ de licence [1/4] Résolution des packages… [2/4] Récupération des packages… [ 3/4] Liens de dépendances… [4/4] Construction de nouveaux packages… succès Installation de "[email protected]" avec les fichiers binaires: - avertissement create-react-app Aucun champ de licence Terminé dans 2.59s.
Voici l'installation à l'aide de npm:
$ npm install -g create-react-app / usr / local / bin / create-react-app -> /usr/local/lib/node_modules/create-react-app/index.js + [email protected] .0 a ajouté 80 paquets en 9.422s
Oui. Cela corrobore sans aucun doute d'autres rapports faisant état d'un avantage de vitesse significatif pour le fil. Le fil a été installé en 2,59 secondes, alors que npm prenait 9,422 secondes. Le fil était 3.63X plus rapide!
Le fil possède également des installations plus robustes que npm. Qu'est-ce qui rend une installation feuilletée? Si les installations ultérieures échouent ou produisent un résultat différent, l'installation est instable. Il y a deux causes principales:
Le fil répond aux deux préoccupations.
Yarn utilise un cache global hors ligne pour stocker les packages que vous avez installés une fois. Par conséquent, les nouvelles installations utilisent la version mise en cache et évitent les défaillances dues à des défaillances réseau intermittentes. Vous pouvez trouver où se trouve votre cache de fil en tapant:
$ yarn cache dir /Users/gigi.sayfan/Library/Caches/Yarn/v1
Voici les cinq premiers packages de mon cache hors ligne:
$ ls 'dir cache de fil' | head -5 npm- @ kadira npm- @ types npm-Base64-0.2.1-ba3a423070e18670
Le fil peut aller encore plus loin et avoir un miroir hors ligne complet qui fonctionnera avec les mises à niveau du fil lui-même.
Le fichier yarn.lock est mis à jour chaque fois que vous ajoutez ou mettez à niveau une version. Il identifie essentiellement la version exacte de chaque package pouvant être spécifiée dans package.json à l'aide d'un versioning partiel (par exemple, les versions majeure et mineure) et ses dépendances..
Voici le début d'un fichier yarn.lock typique. Vous pouvez voir la version spécifiée dans package.json comme "abbrev @ 1" et la version épinglée "1.1.0".
chat yarn.lock | head -18 # CECI EST UN FICHIER AUTOGÉNÉRÉ. NE MODIFIEZ PAS CE FICHIER DIRECTEMENT. # filfichierfil v1 abab@^1.0.3: version "1.0.3" résolue "https://registry.yarnpkg.com/abab/- /abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" version abrégée "1" .0 "résolu" https://registry.yarnpkg.com/abbrev/- /abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f "accepte@~1.3.3: version" 1.3.4 "résolue" https: // registre. yarnpkg.com/accepts/ - / accept-1.3.4.tgz # 86246758c7dd6d21a6474ff084a4740ec05eb21f "dépendances: mime-types" ~ 2.1.16 "négociateur" 0.6.1 "
Le fil vous donne aussi le fil pourquoi
commande pour expliquer pourquoi un paquet particulier est installé dans votre projet:
$ fil pourquoi le fil de travailleur-ferme pourquoi v0.27.5 [1/4] Pourquoi avons-nous le module "travailleur-ferme"…? [2/4] Initialisation du graphe des dépendances… [3/4] Recherche de la dépendance… [4/4] Calcul de la taille des fichiers… info Ce module existe parce que "react-scripts # jest # jest-cli" en dépend. info Taille du disque sans dépendances: "132 Ko" info Taille du disque avec dépendances uniques: "212 Ko" info Taille du disque avec dépendances transitives: "244 Ko" info Nombre de dépendances partagées: 2 Effectué en 1.38s.
Certains projets doivent respecter certaines exigences en matière de licence ou produire simplement un rapport à des fins internes ou externes. Le fil le rend vraiment facile avec le licences de fils ls
commander. Il génère un rapport compact contenant le nom complet du package, son URL et la licence. Voici un exemple:
$ licences de fils ls | head -20 licences de fil v0.27.5 ├─ [email protected] ├─ Licence: ISC URL: git + https: //github.com/jsdom/abab.git ├─ [email protected] Licence: ISC └─ URL: http://github.com/isaacs/abbrev-js ├─ [email protected] Licence: MIT URL: https://github.com/jshttp/ [email protected] ├─ .2 Licence: MIT URL: https://github.com/kesne/acorn-dynamic-import ├─ [email protected] Licence: MIT └─ URL: https://github.com/ForbesLindesay/acorn-globals.git ├─ [email protected] ├─ Licence: MIT └─ URL: https: // github .com / RReverser / acorn-jsx
Le fil peut même générer un disclaimer pour vous avec licences de fils generer-disclaimer
. Il en résulte du texte avec un message de non-responsabilité et du texte pour chaque package de votre application. Voici un exemple de la clause de non-responsabilité générée pour mon projet de test:
----- Les logiciels suivants peuvent être inclus dans ce produit: utils-merge. Une copie du code source peut être téléchargée à partir de git: //github.com/jaredhanson/utils-merge.git. Ce logiciel contient les licences et avis suivants ci-dessous: (Licence MIT) Copyright (c) 2013 Jared Hanson L’autorisation est, par la présente, accordée gratuitement à toute personne obtenant une copie de ce logiciel et des fichiers de documentation connexe (le «Logiciel»). , pour traiter le logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion, de publication, de distribution, de sous-licence et / ou de vente de copies du logiciel, et pour permettre aux personnes à qui le logiciel est fourni de le faire Ainsi, sous réserve des conditions suivantes: La notice de copyright ci-dessus et la présente notice de permission doivent être incluses dans toutes les copies ou parties substantielles du logiciel. LE LOGICIEL EST FOURNI "EN L'ETAT", SANS AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, Y COMPRIS DE MANIÈRE NON LIMITÉE À LA GARANTIE DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'INFRACTION. EN AUCUN CAS, LES AUTEURS OU LES TITULAIRES DU COPYRIGHT NE PEUVENT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DE DOMMAGES OU D'AUTRE RESPONSABILITÉ, QU'IL SOIT DANS UN ACTION DE CONTRAT, DE LORT OU DE AUTRE FACILITÉ QUI SOIT LIÉ AU LOGICIEL OU À L'UTILISATION OU AUTRE LOGICIEL. ----- Les logiciels suivants peuvent être inclus dans ce produit: uuid. Une copie du code source peut être téléchargée à l’adresse https://github.com/defunctzombie/node-uuid.git. Ce logiciel contient les licences suivantes et les notifications suivantes: Copyright (c) 2010-2012 Licence MIT de Robert Kieffer - http://opensource.org/licenses/mit-license.php -----
Le fil est entièrement compatible avec npm, car il s’agit d’un client différent qui fonctionne avec les registres npm. Très tôt, il a soutenu Bower, mais peu après, une décision a été prise d'abandonner le soutien de Bower..
La raison principale était que le support de Bower ne fonctionnait pas très bien et vidait le répertoire bower_components ou ne récupérait aucun paquet Bower dans un nouveau projet. Mais une autre raison est que l'équipe de Yarn ne voulait pas encourager la fragmentation dans le domaine de la gestion des paquets, mais préférait que tout le monde passe à npm..
Si vous investissez dans Bower et ne souhaitez pas migrer pour le moment, vous pouvez toujours utiliser Yarn, mais ajoutez l'extrait suivant à votre fichier package.json:
"scripts": "postinstall": "bower install"
Le fil peut fonctionner avec plusieurs types de registre. Par défaut, si vous ajoutez simplement un paquet, il utilisera son registre npm (qui est ne pas le registre npm standard). Mais il peut aussi ajouter des packages à partir de fichiers, d'archives à distance ou de dépôts git distants..
Pour voir le registre npm configuré actuel:
$ yarn config obtenir un registre https://registry.yarnpkg.com
Pour définir un type de registre différent: fil config set registre
Pour ajouter des packages depuis différents emplacements, utilisez les commandes add suivantes:
# Ajout du fil de registre npm configuré# Paquet local fil ajouter un fichier: / # Fil à distance archivée ajouter https: // .tgz # Remote git repo yarn ajouter
Certaines personnes aiment les emojis et d'autres non. À l'origine, les fils affichaient automatiquement des émojis, mais uniquement sur Mac OS X. Les deux ennemis se sont enflammés: les ennemis des emojis étaient mécontents du fait que leur console sous Mac OS X était encombrée d'émojis, et les amoureux des emojis étaient mécontents de ne pas en avoir. sous Windows et Linux.
Maintenant, les emojis ne sont pas affichés sur macOS par défaut et vous pouvez les activer avec le --Emoji
drapeau:
$ yarn install --emoji yarn install v0.27.5 [1/4] 🔍 Résolution des packages… [2/4] Récupération des packages… [3/4] Liaison des dépendances…
Le fil est le meilleur gestionnaire de paquets JavaScript. Il est compatible avec NPM, mais beaucoup plus rapide. Il résout de sérieux problèmes pour les projets de grande envergure avec une installation instable, il prend en charge plusieurs types de registres et il a des émoticônes pour démarrer.
Comme vous pouvez le constater, JavaScript, bien que doté de nombreuses courbes d’apprentissage, contient de nombreuses bibliothèques et infrastructures. Si vous recherchez des ressources supplémentaires à étudier ou à utiliser dans votre travail, consultez ce que nous avons à votre disposition sur le marché Envato..
La communauté JavaScript est dans l’ensemble très positive et la filature est très dynamique. Il a déjà résolu certains problèmes, tels que le support redondant de Bower et les émoticônes par défaut. Migrer de npm à Yarn est très facile. Je vous recommande fortement d'essayer.