Node.js je open-source višeplatformsko JavaScript runtime okruženje. Posljednjih nekoliko godina postalo je popularan izbor za back-end web razvoj zbog svojih brzih ulazno/izlaznih (I/O) performansi i nenadmašne JavaScript sintakse. Također, njegova prilagodljiva priroda omogućuje brzu prilagodbu, čineći da se ova serverska tehnologija ističe među konkurentima.
Node.js upravitelj paketa — Pregled
Node.js Package Manager ili npm je zadani upravitelj paketa za JavaScript. Npm se često koristi za instalaciju projektnih skripti i upravljanje vanjskim modulima u Node.js projektu. Osim toga, prati module instalirane u projektu pomoću package.json datoteke, koja se nalazi u direktoriju projekta. Npm pohranjuje i bilježi sljedeće informacije:
- Module potrebne za projekt i njihove instalirane verzije, ako postoje.
- Metapodatkovni opis projekta koji uključuje detalje o autoru i licenci, da spomenemo samo neke.
- Izvršne skripte za automatizaciju zadataka povezanih s projektom ili usmjerenih na cilj.
U ovom vodiču, provest ćemo vas kroz korake korištenja Node.js modula s npm-om i package.json.
Započnimo!
Preduvjeti
Kako biste pratili ovaj vodič, trebat će vam sljedeće:
- Node.js mora biti instaliran na vašem sustavu.
- Pratite korake za instalaciju Node.js-a na Ubuntu 18.04
-
Najnovija verzija Ubuntu sustava instalirana na vašem sustavu.
Korak 1: Izradite package.json datoteku
Započnimo naš vodič na primjeru oglednog projekta koji koristi Node.js locator modul. Cilj projekta je prikupiti IP adresu korisnika i prikazati izlaz kao državu podrijetla korisnika. Budući da smo usredotočeni na razumijevanje korištenja Node.js modula s npm, nema potrebe za ručnim pisanjem modula. Umjesto toga, koristit ćemo unaprijed instalirane i prilagodljive pakete u našem projektu.
JSON ili JavaScript Object Notation je standardni format koji se koristi za dijeljenje i prijenos podataka. Na početku ćemo stvoriti JSON datoteku koja će pohranjivati i upravljati softverskim ovisnostima. Međutim, ručno stvaranje package.json datoteke je naporno i dugotrajno. Radi jednostavnosti, koristit ćemo naredbu init za stvaranje package.json datoteke umjesto da ulažemo trud u pisanje dodatnih blokova koda kako bismo napisali naš JSON od nule.
-
init naredba
Prvo, stvorimo novu mapu pomoću naredbe mkdir i nazovimo je locator:
|
1 |
mkdir locator |
Zatim upotrijebite naredbu cd za pomicanje u novostvorenu mapu:
|
1 |
cd locator |
Zatim, upišite npm za pokretanje interaktivnog upita:
|
1 |
npm init |
Nakon toga vidjet ćete izlaz:

1. name
Bit ćete preusmjereni na name vašeg novog projekta; trenutnu mapu. Vidjet ćete zadane vrijednosti u zagradama (). Kako bi ovaj vodič ostao jednostavan i lak za razumijevanje, odabrat ćemo zadane opcije. Pritisnite ENTER za prihvaćanje i nastavak.
2. version
Sljedeća vrijednost je version naziv koji je ključni zahtjev ako dijelite svoj projekt u npm repozitoriju paketa.
|
Napomena: Node.js paketi slijede semantičko verziranje (semver) vodič. Prvi broj: MAJOR verzija i mijenja se samo kada se API promijeni. Drugi broj: MINOR verzija koja se mijenja kada se dodaju nove značajke. Zadnji broj: PATCH verzija koja se mijenja kada se ispravi pogreška ili bug. |
3. description
Polje description je informativni niz koji opisuje proces rada Node.js modula. U našoj demonstraciji, projekt locator će dohvatiti IP adresu korisnika i vratiti državu podrijetla.
|
Napomena: Većinom moduli imaju index.js datoteku kao ulaznu točku. To je također i main svojstvo datoteke package.json, ulazna točka za npm module. Međutim, ako package.json nije pronađena, Node.js će učitati index.js automatski. |
4. test naredba
To je izvršna skripta ili naredba za pokretanje testova vašeg projekta. Budući da je testiranje izvan opsega našeg vodiča, preskočimo ga i pritisnimo ENTER.
5. init naredba
Naredba init će tražiti GitHub repozitorij projekta. Ponovno, preskočimo ovaj dio i nastavimo.
6. keywords
Ključne riječi su niz nizova znakova koji se koriste za pretraživanje repozitorija. Preporučuje se da ključne riječi budu točne i relevantne za vaš projekt kako bi se mogle neometano pratiti.
Navedite ove ključne riječi kao nizove znakova i odvojite ih zarezima. U našem projektu upišite ip, country, latitude, i longitude na upit i vidjet ćete ih uključene kao ključne riječi u package.json.
7. author
Tretirajte polje author kao povratnu informaciju i način interakcije s vašim korisnicima. Na primjer, ako korisnici otkriju pogrešku u vašem modulu, mogu koristiti ovo polje da vas obavijeste i kako bi se pogreška ispravila.
-
Format: "Ime \<E-pošta\> (Web-stranica)".
-
Demo: "Paul\<paul@your_domain\> (https://your_domain)"
-
Dodavanje e-pošte i web-stranice je neobavezno. Međutim, možete navesti valjanog autora i dodati svoje kontakt podatke kao author. Potvrdite detalje i pritisnite ENTER.
8. license
Polje license prikazuje pravne uvjete i odredbe koje korisnici moraju znati prilikom korištenja vašeg modula. Budući da su Node.js moduli otvorenog koda, npm ga automatski konfigurira na ISC-licencu .
Idite na stranicu s licencama otvorenog koda i odaberite onu Open Source Initiative koja najbolje odgovara vašim potrebama. Upišite UNLICENSED na upit ako vam ne treba licenca za vaš repozitorij. U našem vodiču koristit ćemo zadanu ISC licencu. Pritisnite ENTER kako biste dovršili ovaj proces.
Naredba init stvorit će datoteku package.json i prikazati rezultat:

Zatim pritisnite ENTER za nastavak i stvaranje datoteke package.json . Naša JSON datoteka vodit će evidenciju o svim modulima i paketima koje ćemo instalirati u našem projektu.
U sljedećem koraku instalirat ćemo zavisnosti i Node.js module.
Step 2: Install Dependencies and Modules
Stvaranje prilagođenih vanjskih biblioteka oduzima puno vremena i zahtijeva napor. Alternativno, najučinkovitiji način je instaliranje unaprijed definiranih zavisnosti i vanjskih biblioteka. U našem vodiču koristit ćemo HTTP biblioteku kako bismo omogućili našem demo modulu za lociranje upućivanje vanjskog API zahtjeva za prikupljanje geografskih podataka.
U ovom vodiču koristit ćemo biblioteku axios za upućivanje HTTP zahtjeva. Prvo, instalirajmo axios:
|
1 |
npm install axios --save |
Započnite s instalacijom npm paketa, nakon čega ih navedite odvojene razmakom. Također, uključite oznaku --save kako biste osigurali da je projekt spremljen kao zavisnost projekta.
Vidjet ćete izlaz:

Otvorite package.json pomoću nano ili bilo kojeg drugog uređivača teksta po vašem izboru:
|
1 |
nano package.json |
Uočite novo dodano svojstvo istaknuto na dnu bloka koda:

-
Preuzmite razvojne zavisnosti
Razvojne zavisnosti su paketi koji se koriste u razvoju projekta i nemaju nikakvu svrhu u produkciji ili održavanju projekta. Iako ove zavisnosti mogu zvučati neučinkovito u produkcijskim okruženjima, one igraju značajnu ulogu u pisanju i prepisivanju koda.
Poput alata za provjeru koda (code linters), razvojne zavisnosti igraju ključnu ulogu u razvoju softvera. Programeri uglavnom koriste alate za provjeru koda kako bi održali ujednačenost i dosljednost u stiliziranju tijekom razvoja projekta, što je inače beskorisno u produkciji.
Instalirajmo linter kao razvojnu zavisnost za vaš projekt. Također, upotrijebite zastavicu --save-dev kako biste spremili eslint kao zavisnost potrebnu za razvoj:
|
1 |
npm i eslint@6.0.0 --save-dev |
Dodali smo @6.0.0 našoj zavisnosti tako da kada ažuriramo module, oni dobiju oznaku verzije. Simbol @ obavijestit će npm da potraži određenu oznaku koju želite instalirati. Sada ponovno otvorite package.json datoteku:
|
1 |
nano package.json |
Vidjet ćete izlaz:

- Samogenerirane datoteke: node_modules i package-lock.json
Na početku, prilikom instaliranja paketa u Node.js projekt, datoteke package.json i package-lock.json stvaraju se automatski. Potvrdite ove datoteke u radnom direktoriju:
![]()
Budući da je većina instaliranih zavisnosti pohranjena u node_modules mapu, preporučljivo je ne predavati ovu mapu u vaš repozitorij pod kontrolom verzija. S povećanjem broja instaliranih ovisnosti, veličina node_modules se također povećava.
Nasuprot tome, datoteka package-lock.json vodi evidenciju o točnim instaliranim verzijama, pa nema potrebe eksplicitno uključivati node_modules. Za razliku od mape node_modules , ovu datoteku možete predati u svoj repozitorij pod kontrolom verzija jer pruža detaljan prikaz svih vaših ovisnosti zajedno s njihovim verzijama.
- Instalirajte pomoću package.json
Datoteke package.json i package-lock.json omogućuju vam postavljanje istih ovisnosti projekta prije pokretanja razvoja projekta. Idite na svoje stablo direktorija i stvorite novu mapu na istoj razini direktorija kao i locator. Nazovite novu mapu cloned_locator:
|
1 2 |
cd .. mkdir cloned_locator |
Zatim prijeđite u cloned_locator:
|
1 |
cd cloned_locator |
Uvezite datoteke package.json i package-lock.json iz locator u cloned_locator:
|
1 |
cp ../locator/package.json ../locator/package-lock.json . |
Znak . označava trenutnu mapu. Instalirajte potrebne module pomoću sljedeće naredbe:
|
1 |
npm i |
Na početku, npm će provjeriti datoteku package-lock.json kako bi instalirao module. Ako lock datoteka nije dostupna, čita datoteku package.json kako bi odredio instalacije.
Općenito, instalacija iz datoteke package-lock.json je jednostavna jer lock datoteka sadrži točnu verziju modula i njihovih ovisnosti. To znači da kada instalirate pomoću package.json, npm će uštedjeti dodatno vrijeme potrebno za pronalaženje kompatibilne i stabilne verzije.
Zanemarite razvojne ovisnosti dodavanjem oznake --production :
|
1 |
npm i --production |
Nakon toga se vratite u locator:
|
1 |
cd ../locator |
- Globalne instalacije
Do sada smo instalirali npm module lokalno. Međutim, imate i alternativu za globalnu instalaciju paketa i njihovo korištenje putem naredbe ljuske ili CLI-ja. Na primjer, možete upravljati trenutnim projektom locator pomoću biblioteke Hexo i upravljati svojom statičkom web stranicom. Koristite sljedeću naredbu s oznakom -g za globalnu instalaciju Hexo CLI-ja:
|
1 |
npm i hexo-cli -g |
|
Napomena: Ako dobijete pogrešku prilikom globalne instalacije paketa, isprobajte ovu naredbu sudo npm i hexo-cli -g s root vjerodajnicama. |
Koristite sljedeću naredbu kako biste provjerili je li paket uspješno instaliran:
|
1 |
hexo --version |
Vidjet ćete izlaz:

Korak 3: Upravljanje i ažuriranje modula
Upravitelj paketa ima više posla od samog instaliranja Node.js modula. Postoji mnoštvo opcija prilagodbe gdje možete izlistati, ažurirati, deinstalirati ili čak dodati sigurnosni sloj po želji.
U ovom odjeljku naučit ćemo kako:
-
Izlistati module
-
Ažurirati module
-
Deinstalirati module
-
Revidirati module
Raspravimo o svakom detaljnije:
-
Izlistavanje modula
Izlistavanje modula, kao što naziv sugerira, pružit će vam detalje o svim modulima instaliranim na projektu. Umjesto čitanja datoteke package.json , možete koristiti naredbu ls ili list kako biste detaljno saznali o modulima vašeg projekta:
|
1 |
npm ls |
Vidjet ćete izlaz:

Prema zadanim postavkama, naredba ls izlistava cijelo stablo ovisnosti koje uključuje ovisnosti projekta i module o kojima ovisi. Međutim, možete dobiti i pregled iz ptičje perspektive te eksplicitno ciljati određeni modul. Koristite sljedeću naredbu za provjeru modula koje ste instalirali bez njihovih ovisnosti:
|
1 |
npm ls --depth 0 |
Vidjet ćete izlaz:

-
Ažuriranje modula
Uvijek je preporučljivo održavati svoj npm modul ažuriranim kako se ne biste suočili s rušenjem softvera ili konfliktima. Koristite sljedeću naredbu da biste provjerili postoji li potreba za ažuriranjem:
|
1 |
npm outdated |
Vidjet ćete izlaz:

Shvatimo svaki pojam detaljnije:
- Paket: Navodi trenutni Package instaliran u vašem projektu.
- Trenutno: Ovo prikazuje Current verziju paketa.
- Traženo: Prikazuje npm verzija koja najbolje odgovara zahtjevu za verzijom u package.json.
- Najnovije: Prikazuje najnoviju npm verziju koja je objavljena i koju morate ažurirati ako je potrebno.
- Lokacija: Paket Lokacija u stablu ovisnosti.
Kao što je predloženo, možemo ažurirati naš npm na stabilnu verziju. Koristite sljedeću naredbu za ažuriranje trenutnog paketa:
|
1 |
npm up eslint |
Vidjet ćete izlaz:

Umjesto da ih ažurirate jednog po jednog, također možete ažurirati sve module odjednom pomoću up naredbe:
|
1 |
npm up |
-
Deinstalacija modula
Mnogo puta ovisnost možda neće prikazati očekivani izlaz i morat ćete stvoriti prilagođenu ovisnost. U takvim scenarijima imate opciju deinstaliranja ovisnosti iz vaših package.json i package-lock.json datoteka. Pretpostavimo da imate axios kao ovisnost i ona ne pruža zadovoljavajući rezultat. Bez sumnje ćete ukloniti ovo spremište iz svog projekta. Koristite uninstall ili un naredbu za uklanjanje axios:
|
1 |
npm un axios |
Vidjet ćete izlaz:

Iako je uninstall naredba uklonila ovisnost, nismo primili nikakvu obavijest o njezinom uklanjanju. Izlistajmo ovisnosti kako bismo vidjeli koliko ovisnosti sada imamo:
|
1 |
npm ls --depth 0 |
Vidjet ćete izlaz bez ovisnosti axios na popisu:

-
Revizija modula
Ako su ovisnosti instalirane u vašem projektu sklone bilo kakvoj potencijalnoj sigurnosnoj prijetnji, možete ih otkriti. Najprije morate instalirati zastarjelu verziju modula request kako biste vidjeli kako radi modul za reviziju:
|
1 |
npm i request@2.60.0 |
Vidjet ćete izlaz koji vas poziva da popravite prijetnje ili ranjivosti:

Za proširenje pojedinosti o ranjivostima i prijetnjama, koristite audit naredbu:
|
1 |
npm audit |
Vidjet ćete detaljno sigurnosno izvješće:

Za rješavanje ovih ranjivosti koristite fix naredbu:
|
1 |
npm audit fix |
Vidjet ćete izlaz:

Možda ste primijetili da su dvije od devet ranjivosti popravljene. Međutim, preostalih sedam ranjivosti i dalje postoji u vašim ovisnostima jer audit fix ne rješava sve probleme. Kako biste riješili ovaj problem, možda ćete morati ažurirati svoju ovisnost na višu verziju pomoću drugog API-ja. Budite oprezni pri ažuriranju jer postoji vjerojatnost da biste mogli prekinuti kod više u stablu ovisnosti. Koristite sljedeću naredbu kako biste potvrdili da su ranjivosti nestale:
|
1 |
npm audit fix --force |
Budite oprezni kada koristite drugačiji API za rješavanje prijetnji ranjivosti jer ako niste sigurni u to, to može dovesti do narušavanja funkcionalnosti koda.
Zaključak
Za kraj, demonstrirali smo kako koristiti Node.js module s npm and package.json. Osim toga, prošli smo kroz metode izlistavanja, ažuriranja, upravljanja, revizije i deinstaliranja ovisnosti naših paketa. Kao sljedeći izazov, potičemo vas da upotrijebite koncepte o kojima se raspravlja u ovom vodiču i sami eksperimentirate s instaliranjem i testiranjem paketa. Također možete pokušati izgraditi Node.js aplikacije i konfigurirati ovisnosti kako biste unaprijedili svoje učenje.
Osim toga, postoji mnogo drugih materijala za učenje o Node.js i Javascript temama koje možete pronaći na našem blogu:
- Instalacija Node.js na CentOS 8: Potpuni vodič
- Povezivanje PostgreSQL-a s Node.js aplikacijama: Vodič
- Korištenje HTTP klijenta Axios u React aplikaciji: Vodič
- Kako implementirati Node.js (Express.js) aplikaciju s Dockerom na Ubuntu 20.04
Sretno programiranje!
Komentari
Još nema komentara. Budite prvi.