6 lucruri care fac Fire cel mai bun Manager de pachete JavaScript

Fire este un client npm open source care a fost dezvoltat pe Facebook și îmbunătățește multe aspecte ale clientului npm standard. În acest tutorial, mă voi concentra pe primele șase caracteristici care fac Fire minunat:

  1. Viteză
  2. Instalații robuste
  3. Verificări de licență
  4. Compatibilitate cu npm și Bower
  5. Registrele multiple
  6. emoticonuri

1. Viteza

Una dintre pretențiile lui Yarn pentru faima este viteza sa față de clientul npm standard. Dar cât de rapid este? Într-un benchmark recent, Fire a fost de două până la trei ori mai rapid decât npm. Indicatorul de referință a programat instalarea React, Angular 2 și Ember. Acesta este un test destul de bun pentru un manager de pachete deoarece fiecare dintre aceste cadre trage o grămadă de dependențe și reprezintă o parte importantă a dependențelor unei aplicații web din lumea reală.  

Să adăugăm un alt punct de date și să ne verificăm prin instalarea unei aplicații create-react-using cu fire și npm. Aici este instalarea folosind fire:

$ fire globale adăugați create-react-app --prefix / usr / fire locale globale v0.27.5 warning.json: Nici un avertisment privind câmpul de licență Nici un câmp de licență [1/4] Rezolvarea pachetelor ... [2/4] Preluarea pachetelor ... [ 3/4] Legarea dependențelor ... [4/4] Construirea de pachete proaspete ... succes Instalat "[email protected]" cu binare: - warn-create-react-app.

Aici este instalarea folosind npm:

$ npm install -g creare-reacție-app / usr / local / bin / create-react-app -> /usr/local/lib/node_modules/create-react-app/index.js + [email protected] .0 a adăugat 80 de pachete în 9.422s

Da. Acest lucru confirmă cu siguranță alte rapoarte despre un avantaj semnificativ de viteză pentru fire. Fire instalat în 2,59 secunde, în timp ce npm a avut 9,422 secunde. Fire a fost de 3.63X mai rapid!

2. Instalații robuste

Fire are, de asemenea, mai multe instalări robuste decât npm. Ce face o instalare subțire? În cazul în care instalările ulterioare nu reușesc sau produc un rezultat diferit, atunci o instalare este subțire. Există două cauze principale:

  1. Probleme de rețea tranzitorii ar putea provoca preluarea pachetelor din registru pentru a eșua.
  2. Noile lansări de pachete ar putea avea ca rezultat schimbări incompatibile și de rupere.

Firele se adresează ambelor preocupări. 

Cache offline

Fire utilizează o memorie cache offline la nivel mondial pentru a stoca o singură dată pachetele pe care le-ați instalat, astfel încât noile instalații să utilizeze versiunea stocată în cache și să evite defecțiunile din cauza unor erori de rețea intermitente. Puteți găsi unde se află cache-ul dvs. de fire prin tastarea:

$ cache dir dir /Users/gigi.sayfan/Library/Caches/Yarn/v1

Iată primele cinci pachete din memoria cache offline:

$ ls 'cache fire dir' cap -5 npm- @ kadira npm- @ tipuri npm-Base64-0.2.1-ba3a4230708e186705065e66babdd4c35cf60028 npm-JSONStream-0.8.4-91657dfe6ff857483066132b4618b62e8f4887bd npm-abab-1.0.3-b81de5f7274ec4e756d797cd834f303642724e5d

Fire poate merge chiar mai departe și au o oglindă completă offline, care va lucra în întreaga actualizare a firelor în sine.

Fișierul fire.lock

Fișierul fire.lock este actualizat ori de câte ori adăugați sau actualizați o versiune. Acesta elimină în esență versiunea exactă a fiecărui pachet care poate fi specificată în package.json folosind versiuni parțiale (de exemplu, doar majore și minore) și dependențele acestuia. 

Aici este începutul unui fișier tipic de fire.lock. Puteți vedea versiunea așa cum este specificată în package.json, precum "abbrev @ 1" și versiunea "1.1.0".

 pisica de pisica | cap -18 # Acesta este un fișier AUTOGENERAT. NU FOLOSITI ACEST FIȘIERE DIRECT. # Fire lockfile v1 abab@^1.0.3: versiunea "1.0.3" rezolvat "https://registry.yarnpkg.com/abab/- /abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" abbrev @ 1: versiunea „1.1 .0" rezolvat "https://registry.yarnpkg.com/abbrev/- /abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" accepts@~1.3.3: versiunea "1.3.4" rezolvat „https: // registru. "dependențe: tipuri de mime" ~ 2.1.16 "negociator" 0.6.1 " 

Dar de ce?

Fire vă oferă, de asemenea, fire de ce comanda pentru a explica de ce un pachet special este instalat în proiectul dvs.:

$ fire de ce fire-lucrător-fermă de ce v0.27.5 [1/4] De ce avem modulul "ferma muncitoare" ...? [2/4] Inițializarea graficului de dependență ... [3/4] Găsirea dependenței ... [4/4] Calculul dimensiunilor fișierelor ... info Acest modul există pentru că "script-urile de reacție # jest # jest-cli" depinde de acesta. info Dimensiune disc cu dependente tranzitorii: "244kB" info Număr dependențe partajate: 2 Terminat în 1.38s.

3. Cecuri de licență

Unele proiecte trebuie să respecte anumite cerințe de licențiere sau să elaboreze doar un raport pentru scopuri interne sau externe. Fire face foarte ușor cu fire licențe ls comanda. Acesta produce un raport compact care include numele pachetului complet calificat, adresa URL și licența. Iată un exemplu:

licențe de fire ls | cap -20 licențe de fire v0.27.5 ├─ [email protected] │ ├─ Licență: ISC │ └─ URL: git + https: //github.com/jsdom/abab.git ├─ [email protected] │ ├ ─ Licență: ISC │ └─ URL: http://github.com/isaacs/abbrev-js ├─ [email protected] │ ├─ Licență: MIT │ └─ URL: https://github.com/jshttp/ accepts.git ├─ [email protected] │ ├─ Licență: MIT │ └─ URL: https://github.com/kesne/acorn-dynamic-import ├─ [email protected] │ ├─ Licență: MIT │ └─ URL: https://github.com/ForbesLindesay/acorn-globals.git ├─ [email protected] │ ├─ Licență: MIT │ └─ URL: https: // github .com / RReverser / acorn-jsx 

Fire poate genera chiar și o renunțare pentru tine cu licențe de fire generate-disclaimer. Rezultatul este un text cu un mesaj de avertisment și un text pentru fiecare pachet din aplicația dvs. Iată o mostră din renunțarea generată pentru proiectul meu de testare:

----- Următorul software poate fi inclus în acest produs: utils-merge. O copie a codului sursă poate fi descărcată de la git: //github.com/jaredhanson/utils-merge.git. Acest software conține următoarea licență și nota de mai jos: (Licența MIT) Drept de autor (c) 2013 Jared Hanson Permisiunea se acordă gratuit tuturor persoanelor care obțin o copie a acestui software și a fișierelor de documentație asociate ("Software" , să se ocupe de Software fără restricții, inclusiv, fără limitare, drepturile de utilizare, copiere, modificare, îmbinare, publicare, distribuire, sublicență și / sau vânzarea de copii ale Software-ului și de a permite persoanelor cărora Software-ul este furnizat să facă astfel încât, sub rezerva următoarelor condiții: Nota de mai sus despre drepturile de autor și acest aviz de permisiune vor fi incluse în toate exemplarele sau părți substanțiale ale Software-ului. SOFTWARE-UL ESTE OFERIT „CA ATARE“, FĂRĂ NICI UN FEL DE GARANȚIE, EXPLICITE SAU IMPLICITE, INCLUSIV, DAR FĂRĂ A SE LIMITA LA GARANȚII DE COMERCIALIZARE, POTRIVIRE PENTRU UN ANUMIT SCOP ȘI NEÎNCĂLCARE. ÎN NICI UN CAZ AUTORII SAU DEȚINĂTORII DREPTURILOR DE AUTOR NU VOR FI RESPONSABILI PENTRU ORICE REVENDICARE, DAUNE SAU DATORIE, FIE ÎN CONTRACT, PREJUDICIU SAU ALTFEL, DECURGE SAU ÎN LEGĂTURĂ CU SOFTWARE-UL SAU UTILIZAREA SAU ALTE TRANZACȚII CARE SOFTWARE. ----- Următorul software poate fi inclus în acest produs: uuid. O copie a codului sursă poate fi descărcată de la https://github.com/defunctzombie/node-uuid.git. Acest software conține următoarea licență și notificare de mai jos: Copyright (c) 2010-2012 Robert Kieffer Licență MIT - http://opensource.org/licenses/mit-license.php ----- 

4. Compatibilitate cu npm și Bower

Fire este pe deplin compatibil cu npm, deoarece este doar un alt client care funcționează cu registrele npm. Foarte devreme a susținut-o pe Bower, dar apoi la scurt timp după ce a fost luată decizia de a renunța la sprijinul lui Bower. 

Principalul motiv a fost că suportul Bower nu a funcționat foarte bine și a golit directorul bower_components sau nu a adus pachete de bower pe un proiect proaspăt. Dar un alt motiv este faptul că echipa de fire nu a vrut să încurajeze fragmentarea în arena de gestionare a pachetelor și în loc preferat pentru toată lumea să treacă la npm.

Dacă sunteți investit în Bower și nu doriți să migrați chiar acum, puteți utiliza în continuare Fire, dar adăugați fragmentul următor în fișierul package.json:

"scripts": "postinstall": "instalare bower"

5. Registrele multiple

Fire poate lucra cu mai multe tipuri de registru. În mod implicit, dacă adăugați doar un pachet, acesta va folosi registrul său npm (care este nu registrul standard npm). Dar poate adăuga și pachete din fișiere, tarbale de la distanță sau depozite de git la distanță.

Pentru a vedea actualul registru npm configurat:

fișierul de configurare a firelor de fire https://registry.yarnpkg.com

Pentru a seta un alt tip de regiștru: fire config set registru

Pentru a adăuga pachete din locații diferite, utilizați următoarele comenzi de adăugare:

# Configurați npm registru adăugați registru  # Fișă de ambalare locală adăugați fișier: / # Fire de țintă la distanță adăugați https: //.tgz # Remote git repo fire add 

6. Emojis FTW!

Unii oameni ca emojis, și unii oameni nu. Firele au afișat emojis automat, dar numai pe Mac OS X. Acesta a prins foc din ambele tabere: ucigașii emoji au fost supărați de faptul că consola lor de pe Mac OS X a fost aglomerată cu emoji, iar iubitorii de emoji au fost supărați că nu aveau emojis pe Windows și Linux. 

Acum, emojis nu sunt afișate în MacOS în mod implicit și puteți să activați emojis cu --emoticonuri steag:

$ thread instalare --emoji fire install v0.27.5 [1/4] 🔍 Rezolvarea pachetelor ... [2/4] 🚚 Preluarea pachetelor ... [3/4] 🔗 Legarea dependențelor ... 

Concluzie

Fire este cel mai bun manager de pachete JavaScript. Este compatibil cu npm, dar mult, mult mai rapid. Ea abordează probleme grave pentru proiectele de mari dimensiuni cu instalare subțire, suportă mai multe tipuri de registre și are emojis la boot. 

JavaScript, deși nu fără curbele sale de învățare, are o mulțime de biblioteci și cadre pentru a vă ține ocupat, după cum puteți vedea. Dacă sunteți în căutarea unor resurse suplimentare pentru a studia sau a utiliza în munca dvs., verificați ce avem disponibil în piața Envato.

Comunitatea JavaScript este, în general, foarte pozitivă și există mult impuls în spatele firelor. Ea sa adresat deja unor probleme cum ar fi redundanța suportului Bower și emojis în mod implicit. Migrarea la Fire de la npm este foarte ușoară. Vă recomand să încercați.

Cod