Node Package Manager ¶
A Node.js-hez tartozó Node Package Manager (NPM) egy olyan csomagkezelő, amely lehetővé teszi a JavaScript csomagok keresését, telepítését, frissítését, valamint a projektünk függőségeinek kezelését. Az NPM a Node.js telepítésével együtt kerül telepítésre, így nem szükséges külön telepíteni.
Emlékeztető
Pythonban már láthattunk egy hasonló csomagkezelőt, a pip
-et.
Figyelem
Nem összekeverendő az NPM (Node Package Manager) és az NVM (Node Version Manager) szoftvereket. Az NVM a Node.js verziók kezelésére szolgál, míg az NPM a csomagok kezelésére.
Projekt parancsok¶
Az NPM használatához a terminálban a npm
parancsot kell használnunk. Az alábbiakban néhány gyakran használt parancs található.
Projekt telepítése¶
Ha már van egy projektünk, amely tartalmazza a package.json
fájlt, akkor a következő paranccsal telepíthetjük a projekt függőségeit:
Emlékeztető
Pythonban a pip install -r requirements.txt
parancs hasonló funkciót lát el.
Csomag hozzáadása¶
Ha egy új csomagot szeretnénk hozzáadni a projektünkhöz, akkor a következő paranccsal tehetjük meg:
A --save
kapcsoló segítségével az NPM automatikusan hozzáadja a csomagot a package.json
fájlhoz.
Ebben az esetben természetesen mindazon túl, hogy a csomag hozzáadásra kerül a projekthez (a package.json
fájlhoz), telepítésre is kerül, tehát megjelenik a node_modules
mappában is.
Emlékeztető
Pythonban a pip install <package>
parancs hasonló funkciót lát el, azonban a requirements.txt
fájlba a pip freeze > requirements.txt
paranccsal kell hozzáadni a csomagot.
package.json¶
Korábban már megismerkedtünk a package.json
fájllal, amely a Node.js projektek fő konfigurációs fájlja.
Ez a fájl gondoskodik a függőségek kezeléséről is, amely során két fontos kategóriát különböztetünk meg.
dependencies¶
Ezek azok a csomagok, amelyekre a projekted futási időben szüksége van. Például, ha egy webalkalmazást fejlesztünk, akkor valószínűleg szükségünk lesz egy webkiszolgáló keretrendszerre, mint az express. Ezeket a csomagokat akkor telepítjük, amikor valaki a projektet használja, például az npm install
parancs kiadásakor.
dependencies
példa express
csomaggal
Az alábbi példában láthatjuk az express
csomag telepítését, amely a fenti parancs kiadását követően jön létre.
devDependencies¶
Ezek azok a csomagok, amelyekre csak a fejlesztés során van szükség, mint például a tesztelési keretrendszerek, lint eszközök, build eszközök stb. Ezek nem kerülnek telepítésre a futási környezetben, csak a fejlesztési környezetben.
Amennyiben ilyen módon szeretnénk egy csomagot hozzáadni a projektünkhöz, akkor a következő paranccsal tehetjük meg:
Példa
Telepítsük az "eslint" csomagot a projektünkbe, mint fejlesztési függőség.
package-lock.json¶
A csomag hozzáadása után láthatjuk, hogy létrejön egy package-lock.json
fájl is.
De mi is ez a fájl, és mi a különbség a package.json
fájlhoz képest?
A package.json
és a package-lock.json
fájlok mind a Node.js projektekben használatosak, de különböző célt szolgálnak.
Íme a fő különbségek:
Cél és funkció¶
package.json:
- Ez a fájl a projekt fő konfigurációs fájlja, amely tartalmazza a projekt nevét, verzióját, szerzőjét, licencét és egyéb metaadatokat.
- Felsorolja a projekt függőségeit (dependencies), dev-függőségeit (devDependencies), és esetleg más típusú függőségeit (pl. peerDependencies, optionalDependencies).
- Lehetővé teszi parancsfájlok (scripts) definiálását, amelyeket a projekt futtatásakor használhatsz, például
npm start
,npm test
, stb. - Az új függőségek hozzáadásakor vagy eltávolításakor ez a fájl frissül.
package-lock.json:
- Ez a fájl automatikusan generálódik a
package.json
alapján, amikor függőségeket telepítesz (npm install
). - A
package-lock.json
pontosan rögzíti a telepített függőségek (és azok alfüggőségeinek) verzióit és letöltési útvonalait. - Célja, hogy biztosítsa a reprodukálható építési folyamatot, azaz, hogy mindenki, aki a projektet telepíti, ugyanazokat a függőségeket kapja meg, ugyanazon verziókkal.
Tartalom és struktúra:¶
package.json:
- Ember által olvasható és kézzel szerkeszthető.
- A függőségek verziószámát itt általában tól-ig verziókban adják meg (pl.
^1.0.0
), ami megengedi, hogy egy bizonyos tartományon belül újabb verziók telepítésre kerüljenek. - Tartalmazza a projekt metaadatait és a parancsfájlokat (scripts).
package-lock.json:
- Géppel olvasható és nem szokás kézzel szerkeszteni.
- Pontosan rögzíti a telepített függőségek és azok alfüggőségeinek verzióit, beleértve a pontos verziószámokat (pl.
1.0.3
). - Tartalmazza a csomagok telepítési útvonalát, ellenőrzőösszegét és egyéb telepítési információkat.
Fájl kezelése és frissítése:¶
package.json:
- Kézzel is szerkeszthető, például ha új függőséget szeretnél hozzáadni a projektedhez.
- Módosul, ha új csomagokat telepítesz, frissítesz, vagy eltávolítasz.
package-lock.json:
- Automatikusan generálódik és frissül, amikor az
npm install
parancsot futtatod. - Közvetlen szerkesztése nem ajánlott, mivel az hibákhoz vezethet a telepítés során.
Reprodukálhatóság¶
package.json:
- Megadja, milyen típusú csomagokra van szükség, de nem rögzíti pontosan, hogy melyik verzió kerül telepítésre.
- Nélküle a telepítési eredmények eltérhetnek, mivel a megadott verziótartományon belüli legfrissebb verziókat telepíti az npm.
package-lock.json:
- Rögzíti a pontos verziókat és telepítési részleteket, így biztosítja a projekt reprodukálhatóságát minden környezetben.
- Összefoglalva, a package.json egy általános konfigurációs fájl a projekted számára, míg a package-lock.json biztosítja, hogy a függőségek pontos verziói mindig ugyanazok legyenek minden telepítés során.
Csomag eltávolítása¶
Ha egy csomagot szeretnénk eltávolítani a projektünkből, akkor a következő paranccsal tehetjük meg:
Emlékeztető
Pythonban a pip uninstall <package>
parancs hasonló funkciót lát el.
Csomag frissítése¶
Ha egy csomagot szeretnénk frissíteni a projektünkben, akkor a következő paranccsal tehetjük meg:
Csomagok listázása¶
Ha szeretnénk megnézni, hogy milyen csomagok vannak telepítve a projektünkben, akkor a következő paranccsal tehetjük meg:
Példa
[email protected] C:\Users\richa\Desktop\demo
├── [email protected]
└── [email protected]
Globális parancsok¶
Csomagok globális telepítése¶
Lehetőségünk van a csomagot nem kizárólag egyetlen projektbe telepíteni, hanem globálisan is. Ekkor a csomagot a következő paranccsal telepíthetjük:
Globális csomagok listázása¶
Ha szeretnénk megnézni, hogy milyen globális csomagok vannak telepítve a rendszerünkön, akkor a következő paranccsal tehetjük meg:
Példa
C:\Program Files\nodejs -> .\
└── [email protected]
Globális csomagok eltávolítása¶
Ha egy globális csomagot szeretnénk eltávolítani a rendszerünkről, akkor a következő paranccsal tehetjük meg: