NEW KID IN THE BLOCK – YARN

Share

 Intro

U JavaScript zajednici, inzinjeri dele stotine hiljada linija koda tako da mogu izbjeci prepisivanje osnovne komponente neke biblioteke. Svaki deo koda moze zauzvrat zavisiti od drugih delova koda, tako da zavisnostima upravljaju menadzeri paketa.

Najpopularniji JavaSkript paket menadzer je npm, koji omogućava pristup više od 300.000 paketa u npm registar. Vise od 5 miliona inzenjera koristi npm, koji vidi do 5 milijardi preuzimanja svakog meseca.

Zato yarn

Novih alata za JavaScript ima u izobilju i svake nedelje izlaze novi. Svi se secamo vremena kada je npm uveden da resi upravljanje zavisnostima za JavaScript i svi su bili uzbuđeni zbog toga. Onda je npm brzo postatao glavni menadzer paketa za Node.js.

 

npm postaje deo zivota programera, programeri ga koriste i za frontend I backend. Iako je npm super, programeri imalju puno problema sa njim. Neki od tih problema su:

Kao sto znamo, svi paketi ce biti sacuvani u node_modules direktorijum u okviru npm-a. Ako ste izbrisali direktorijum node_modules iz bilo kog razloga i uradili npm install u konzoli projekta, npm će ponovo da krene sa preuzimanjem svih paketa zajedno sa svojim zavisnostima, koje samo po sebi nije potrebno i uzima previse vremena.

npm uvek instalira svaku zavisnost jednu iza druge sto se uvek zavrsi troseci mnogo vremena. Nekad mozes I da se prosetas dok to radi :).

Nema offline mode.

Sta nudi

YARN je napravljen da resi tri glavna problema:

Brzina
Bezbednost
Pouzdanost

2 do 7 puta brzi nego npm

Dobre performanse dolaze zbog zanimljivih implementacije kesa. Kad god yarn instalira paket, on ih odma I kesira. Dakle, svaki put kad yarn vidi zahtev za instalaciju za paket, on ce prvo pokusati da je instalira iz svog kesa sto ga cini neuporedivo brzim. Takodje yarn, za razliku od npm-a, izvrsava preuzimanja u paralelnim tredovima tako da na najbolji nacin koristi resurse. Ovo rezultira tome da je yarn brzi od npm-a skoro 7 puta.

Super siguran

Svaki put kada je paket instaliran i sprema se da bude izvrsen, on proverava integritet paketa pomocu checksum-a . Isti metod se koristi I za proveru da li je proces kesiranja paketa zaista uspesan ili ne. Kada se otkrije neispravan checksum, paket se ponovo ucitava iz originalnog izvora.

Pouzdan

Koristeci detaljan, ali sazet lockfile format, i deterministicki algoritam za instaliranje, yarn je u stanju da garantuje da ce onaj ko je radio na jednom sistemu sa jednom verzijom raditi na potpuno isti nacin na bilo koji drugi sistem, sto se u mnogome razlikuje od npm-a koji ume da instalira pogresne verzije,

Lock fajl?

Kada pokrenete yarn (ekvivalentno pokretanju npm instalacije), stvara yarn.lock file. Ovaj fajl je ekvivalentan “Shrinkvrap” fajlu npm-a ali “Shrinkvrap” se ne generise podrazumevano i nece se napraviti ako inzinjer zaboravi da ga generise. Da bi resio problem sinhronizacije, cak i posle svake nadogradnje ili uklanjanja, yarn azurira yarn.lock fajl posle svake promene Tako yarn.lock fajl uvek prati tacan raspored paketa i verzija koje su instalirane u node_modules direktorijumu.

Offline mode

yarn stvara kesiranu kopiju koja olaksava instaliranje online paket. Zbog toga mozete instalirati svoje npm pakete bez internet konekcije sa yarn-om. Ovo je posebno korisno za CI  sisteme koji se ne oslanjaju na internet konekciju i npm bazu, a vasi testovi ce proci cak i kada npm ne radi (sto je bio slucaj pre par godina kada je npm pao na 3 sata).

Generalno govoreci, yarn nudi bolji workflow rada nego npm.

Kako poceti sa yarn-om ?

Za vecinu komandi, yarn radi potpuno na isti nacin kao npm. Medutim, postoje promene u nekoliko osnovnih komandi.

npm install                     → yarn

Pozvana bez argumenta, komanda yarn ce ucitati package.json, povuci pakete iz npm baze, popuniti direktorijum node_modules I generisati yarn.lock fajl.

U tabeli imamo poredjenja komandi izmedju npm-a I yarn-a.

npm install react --save            → yarn add react
npm uninstall react --save       → yarn remove react
npm install react --save-dev    → yarn add react --dev
npm update --save                     → yarn upgrade
npm install react --global            → yarn global add react

Sledece komande su identicne:

npm init                → yarn init
npm link                → yarn link
npm outdated          → yarn outdated
npm publish             → yarn publish
npm run                 → yarn run
npm cache clean         → yarn cache clean
npm login               → yarn login
npm logout             → yarn logout
npm test                 → yarn test

Kao i uvek, koriste -g komandu sa dozom pažnje.
Jos jedna od interesantnih stvari u vezi yarn-a koja ne postoji kod npm-a je to sto mozete proveravati licence svih svojih dependenci-a I isto tako generisati svoje uz pomoc komandi:

yarn licenses
yarn licenses generate

Jedan od interesantnih feature-a napisanih za yarn je yarn why package-name.
Napisan je kao alat za proveru zasto je neki paket instaliran I koje sve dependencie vuce sa sobom.

yarn why react

Za ono koliko sam se ja igrao sa yarn-om, on i radi neverovatno, a probleme jos uvek nisam nasao. Pošto je projekat podržan od strane kompanija kao što su Google i Facebook, veliki sam optimista da ce moze uskoro postati zvanivni menadzer npm paketa.

Share

Prijavi se da prvi dobijaš nove blogove i vesti.

Ostavite odgovor

Miloš Nikolić

Front end engineer @PRODYNA
mm

Miloš Nikolić je jedan od ključnih front-end inženjera u PRODYNA beogradskoj kancelariji. Sa svojom beskrajnom željom za učenjem i rastom, Miloš je stalno fokusiran na pružanju najboljih rezultata visokog kvaliteta. Miloš trenutno radi kao lead developer na novom rešenju koje koristi ReactJS i neke druge nove tehnologije. Pre dolaska u PRODYNA-u, Miloš je radio za velikog proizvođača mikrokontrolera isto kao front-end inženjer. Pored toga što je programer, Miloš učestvuje u svim sportskim aktivnostima sa PRODYNA-om i trenutno se sprema za maratonu u Palermu.

Prijavi se da prvi dobijaš nove blogove i vesti.

Kategorije