Uvod

npm vs yarn

Package manager je alat zadužen da automatizuje procese vezane za rad sa paketima. Softverski paketi se nalaze u arhivnim fajlovima, i svaki paket sadrži meta-data koji opisuju dati softver (kao što je naziv softvera, verzija i lista svih dependencies).
Najčešća primena package manager-a je kod instaliranja paketa i njihovih dependecies. Package manager eliminiše potrebu za ručnim instaliranjem softvera. Pored toga package manager može da se bavi ažuriranjem, konfigurisanjem i na kraju uklanjanjem svih tih komponenti.

Najveći package menadžer je npm, koji je primarno pravljen za node.js (serversko) okruženje, stoga da bi radio u browser-u potrebno je da se pored njega koristi module bundler (browserify ili webpack). Yarn package manager je “novi klinac je u gradu”, facebook-ovo čedo, može da koristi sve npm pakete i ima veoma sličnu sintaksu ali se smatra da brže izvršava naredbe od npm-a.

Organizacija zavisnosti

npm3 dependecies tree small

npm3 dependecies tree ×

npm koristi ugnežedno drvo zavisnosti (eng. nested dependency tree). Nested dependency tree podrazumeva da se za svaki package instalira njegov dependencies, tako da jedan isti dependencies (npr.Jquery) može biti učitan više puta ali za različite programe. Ovakav tip organizacije zahteva više prostora ali omogućava da aplikacije koriste različite verzije istog softvera u jednom projektu.

Treba napomenuti da najnovija verzija npm-a (npm3) pokušava da spreči “dependencies hell” i njegov stil sve više liči na “flat way”. Više o dependencies tree kod npm3 pogledajte na njihovom sajtu.

Primer

Instalacija i inicijalizacija

Instalacija package manager-a

Instalacija npm package managera je u sklopu instalacije node.js. Stoga je prvo potrebno node.js sa oficijelne stranice gde izaberemo odgovarajuću verziju Windows Installer-a (.msi), a zatim uraditi standardnu instalaciju.

Pošto se Yarn koristi uglavnom za npm pakete, potrebno je da imamo instalaciju node.js pre same instacije Yarn-a. Instalacija Yarna je standardna, potrebno je download-ovati instalacioni .msi fajl sa oficijelnog sajta. Link za donlad možete preuzeti ovde, nakon čega sledi standardana instalacija sa next…next…next

Ažuriranje package manager-a

Ažuriranje “npm-a” uz naredbu:

Ažuriranje yarn-a se radi iz npm-a

Inicijalizacija package managera u projekat

Kada imamo instaliranu aplikaciju na našem operativnom sistemu onda možemo da je koristimo u našem projektu. Pri inicijalizaciji package managera se generiše “package.json” fajl sa naredbom:



Rad sa paketima

Instalacija novih paketa

a) Globalna instalacija (operativni sistem)


NAPOMENA:
Za razliku od npm gde se koristi flag “–globall”, kod yarn-a se koristi naredba!
NAREDBA “global” SE PIŠE ODMAH POSLE “yarn”!!!

b) Lokalna instalacija (u projektu)

Instalacija paketa se vrši uz naredbu:

Opcije pri instalaciji:

Flag Namena Shortcut
–save Dodavanje paketa u Dependencies -S
–save-dev Dodavanje paketa u devDependencies -D
@1.2.3 Dadatak zalepljen uz naziv paketa koji definiše tačnu verziju paketa koju želimo da instaliramo (ukoliko se izostavi instalira najnoviju verziju) /

Opcije pri instalaciji

Flag Namena Shortcut
–dev Dodavanje paketa u devDependencies -D
@1.2.3 Dadatak zalepljen uz naziv paketa koji definiše tačnu verziju paketa koju želimo da instaliramo (ukoliko se izostavi instalira najnoviju verziju) /

Instalacija svih paketa iz package.json

Kada se klonira projekat on ne dolazi sa instaliranim paketima već samo sa uputstvom šta treba da se instalira (package.json). Instalacija svih dependenvcies definisanih u package.json fajlu se vrši sa:

ili

ili jednostavno

Ažuriranje dependencies

Ažuriranje pojedinačnih paketa

Uz naredbu za ažuriranje instaliranog paketa potrebno je da koristimo odgovarajući flag koji je korišćen pri instalaciji:

Reinstalacija svih paketa



Uklanjanje dependencies

Uz naredbu za uklanjanje instaliranog paketa potrebno je da koristimo odgovarajući flag koji je korišćen pri instalaciji:

Kod yarn-a nije potrebno koristiti flag pri deinstalaciji:

Pokretanje paketa

Odgovarajući paket se pokreće sa naredbom:


Tips & trics

Korišćenje Git repozitorijuma umesto npm Modules

Ako ne želimo da koristimo oficijalni sajt već neki privatni repozitorijum, možemo da u package.json koristimo sledeći kod:

Brisanje ne deklarisanih modula

Ukoliko nekada zaboravimo da koristimo --save ili --save-dev pri instalaciji paketa, koristite naredbu “prune” za brisanje takvih paketa:

ili u produkciji potrebno je dodati –production:

Ova komanda briše sve pakete koji se ne nalaze u “package.json” fajlu.

Definisanje verzije paketa

Sa adekvatinim predznacima možemo da tačnije definišemo verziju paketa:

  • (^) targetira sve glavne verzije npr. (1.*.*)
  • (~) targetira se najnovija minor verzija npr. (1.2.*)
  • Tačna verzija npr. (1.2.3)

Fiksiranje verzije paketa

Ukoliko želimo da “zauvek” fiksiramo verziju u toku instalacije dovoljno je da koristimo:

Pregled outdated verzija

Ova naredba pregledno izlistava stanje verzije za svaki paket:

Podelite:

2 Responses to “npm & yarn osnove”

    • Dragoljub

      Nažalost ne, nikad ga nisam ozbiljnije koristio da bi mogao da napišem nešto o tome, a kako me posao odveo u Android/Ios vode ko zna da li ću ikada.

Leave a Reply to Dragoljub

Click here to cancel reply.