Uvod
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
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:
Da li ce biti nesto o reactu?
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.