Node.js egy nyílt forráskódú, platformfüggetlen JavaScript futtatókörnyezet. Az elmúlt néhány évben népszerű választássá vált a back-end webfejlesztésben a gyors bemeneti/kimeneti (I/O) teljesítményének és verhetetlen JavaScript szintaxisának köszönhetően. Emellett alkalmazkodó természete gyors testreszabást tesz lehetővé, amivel ez a szervertechnológia kiemelkedik versenytársai közül.
Node.js csomagkezelő — Áttekintés
A Node.js Package Manager, vagyis az npm a JavaScript alapértelmezett csomagkezelője. Az npm gyakran használatos projektszkriptek telepítésére és külső modulok futtatására egy Node.js projektben. Emellett nyomon követi a projektben telepített modulokat a package.json fájl segítségével, amely a projekt könyvtárában található. Az npm a következő információkat tárolja és rögzíti:
- A projekthez szükséges modulok és azok telepített verziói, ha vannak.
- Egy projekt metaadat-leírása, amely többek között tartalmazza a szerző és a licenc adatait.
- Futtatható szkriptek a projekttel kapcsolatos vagy célorientált feladatok automatizálására.
Ebben az útmutatóban végigvezetjük a Node.js modulok npm-mel és package.json fájllal történő használatának lépésein..
Kezdjük el!
Előfeltételek
Az útmutató követéséhez a következőkre lesz szüksége:
- Node.js telepítve kell lennie a rendszerén.
- Kövesse az alábbi lépéseket a Node.js Ubuntu 18.04-re történő telepítéséhez
-
A legújabb telepített Ubuntu verzió a rendszerén.
1. lépés: Hozzon létre egy package.json fájlt
Kezdjük az útmutatót egy minta projekttel, amely a Node.js locator modult használja. A projekt célja a felhasználó IP-címének lekérdezése és a származási ország megjelenítése. Mivel most a Node.js modulok npm segítségével történő használatának megértésére összpontosítunk, nem szükséges manuálisan megírni a modulokat. Ehelyett az előre telepített és testreszabható csomagokat fogjuk használni a projektünkben.
A JSON vagy JavaScript Object Notation egy szabványos formátum az adatok megosztására és továbbítására. Kezdetben létrehozunk egy JSON fájlt, amely a szoftverfüggőségeket fogja tárolni és kezelni. Azonban a package.json manuális létrehozása fárasztó és időigényes. Az egyszerűség kedvéért az init parancsot fogjuk használni a package.json fájl létrehozásához, ahelyett, hogy plusz kódblokkokat írnánk a JSON teljesen nulláról való megírásához.
-
init parancs
Először hozzunk létre egy új mappát a mkdir paranccsal, és nevezzük el locator:
|
1 |
mkdir locator |
Ezután használja a cd parancsot az újonnan létrehozott mappába való belépéshez:
|
1 |
cd locator |
Ezután írja be az npm parancsot az interaktív prompt elindításához:
|
1 |
npm init |
Ezt követően a következő kimenetet fogja látni:

1. name
A rendszer átirányítja a name mezőhöz az új projektjében; ez a jelenlegi mappa. A zárójelben az alapértelmezett értékeket fogja látni (). Hogy ez az útmutató egyszerű és könnyen érthető maradjon, az alapértelmezett beállításokat választjuk. Nyomja meg az ENTER gombot az elfogadáshoz és a folytatáshoz.
2. version
A következő érték a version név, amely kulcsfontosságú követelmény, ha megosztja projektjét az npm csomagtárban.
|
Megjegyzés: A Node.js csomagok a Szemantikus verziókezelés (semver) útmutatót követik. Első szám: A FŐ (MAJOR) verzió, és csak akkor változik, ha az API változik. Második szám: A AL (MINOR) verzió, amely új funkciók hozzáadásakor változik. Utolsó szám: A JAVÍTÓ (PATCH) verzió, amely egy hiba vagy bug javításakor változik. |
3. description
A description egy informatív karakterlánc, amely leírja a Node.js modul működését. A bemutatónkban a locator projekt lekéri a felhasználó IP-címét, és visszaadja a származási országot.
|
Megjegyzés: A legtöbb modul rendelkezik egy index.js fájllal mint belépési ponttal. Ez egyben a main tulajdonsága a package.json fájlnak, ami az npm modulok belépési pontja. Ha azonban a package.json nem található, a Node.js automatikusan betölti az index.js fájlt. |
4. test parancs
Ez egy futtatható szkript vagy parancs a projekt tesztjeinek futtatásához. Mivel a tesztelés meghaladja az útmutatónk kereteit, ugorjuk át, és nyomja meg az ENTER.
5. init parancs
Az init parancs kérni fogja a projekt GitHub-tárolóját. Ezt a részt is ugorjuk át, és folytassuk.
6. keywords
Kulcsszavak karakterláncok tömbje, amelyeket egy tárhely keresésére használnak. Javasoljuk, hogy a kulcsszavak pontosak és a projekthez relevánsak legyenek, hogy zökkenőmentesen nyomon követhetők legyenek.
Sorolja fel ezeket a kulcsszavakat karakterláncként, és válassza el őket vesszővel. A projektünkben gépelje be a ip, country, latitude, és longitude szavakat a parancssorba, és látni fogja, hogy kulcsszóként szerepelnek a package.json.
7. author
Kezelje az author mezőt visszajelzésként és a felhasználókkal való interakció eszközeként. Például, ha a felhasználók hibát észlelnek a modulban, ezen a mezőn keresztül értesíthetik Önt, és kérhetik a hiba javítását.
-
Formátum: "Név \<E-mail\> (Weboldal)".
-
Demó: "Paul\<paul@your_domain\> (https://your_domain)"
-
Az e-mail és a weboldal megadása opcionális. Megadhat azonban egy érvényes szerzőt, és hozzáadhatja elérhetőségeit mint author. Erősítse meg az adatokat, majd nyomja meg az ENTER.
8. license
A license mező azokat a jogi feltételeket mutatja be, amelyeket a felhasználóknak ismerniük kell a modul használata során. Mivel a Node.js modulok nyílt forráskódúak, az npm automatikusan az ISC-license sémára konfigurálja.
Navigáljon a nyílt forráskódú licencek oldalára, és válassza ki azt az Open Source Initiative licencet, amely a leginkább megfelel az igényeinek. Gépelje be az UNLICENSED szót a parancssorba, ha nincs szüksége licencre a tárhelyéhez. Ebben az útmutatóban az alapértelmezett ISC licencet fogjuk használni. Nyomja meg az ENTER billentyűt a folyamat befejezéséhez.
Az init parancs létrehozza a package.json fájlt, és megjeleníti az eredményt:

Ezután nyomja meg az ENTER billentyűt a folytatáshoz és a package.json fájl létrehozásához. A JSON fájlunk nyilvántartja az összes olyan modult és csomagot, amelyet a projektünkben telepíteni fogunk.
A következő lépésben a függőségeket és a Node.js modulokat fogjuk telepíteni.
Step 2: Install Dependencies and Modules
Az egyedi külső könyvtárak létrehozása időigényes és komoly erőfeszítést igényel. Alternatív megoldásként a leghatékonyabb módszer az előre meghatározott függőségek és külső könyvtárak telepítése. Ebben az útmutatóban a HTTP könyvtárat fogjuk használni, hogy a demó helymeghatározó modulunk külső API-kérést indíthasson a földrajzi adatok összegyűjtésére.
Ebben az útmutatóban az axios könyvtárat fogjuk használni HTTP-kérések indításához. Először telepítsük az axios-t:
|
1 |
npm install axios --save |
Kezdje az npm csomag telepítésével, majd sorolja fel őket szóközzel elválasztva. Emellett adja hozzá a --save jelzőt, hogy a projekt függőségeként legyen elmentve.
A következő kimenetet fogja látni:

Nyissa meg a package.json fájlt a nano vagy egy tetszőleges szövegszerkesztő segítségével:
|
1 |
nano package.json |
Figyelje meg az újonnan hozzáadott tulajdonságot, amely a kódblokk alján van kiemelve:

-
Fejlesztési függőségek letöltése
A fejlesztési függőségek olyan csomagok, amelyeket a projekt fejlesztése során használnak, és nincs szerepük a projekt éles működésében (production) vagy karbantartásában. Bár ezek a függőségek feleslegesnek tűnhetnek az éles környezetben, jelentős szerepet játszanak a kódok írásában és újraírásában.
A kódellenőrzőkhöz (linterekhez) hasonlóan a fejlesztési függőségek is létfontosságú szerepet játszanak a szoftverfejlesztésben. A fejlesztők leggyakrabban kódellenőrzőket (code linters) használnak a stílus egységességének és konzisztenciájának fenntartására a projektfejlesztés során, ami egyébként az éles környezetben már szükségtelen.
Telepítsünk egy lintert fejlesztési függőségként a projekthez. Használja a --save-dev jelzőt, hogy elmentse az eslint csomagot a fejlesztéshez szükséges függőségként:
|
1 |
npm i eslint@6.0.0 --save-dev |
Hozzáadtuk a @6.0.0 karaktert a függőségünkhöz, hogy a modulok frissítésekor verziócímkét kapjanak. A @ szimbólum jelzi az npm számára, hogy keressen rá a telepíteni kívánt specifikus verzióra. Most nyissa meg újra a package.json fájlt:
|
1 |
nano package.json |
A következő kimenetet fogja látni:

- Automatikusan generált fájlok: node_modules és package-lock.json
Kezdetben, amikor egy csomagot telepít a Node.js projektbe, a package.json és a package-lock.json fájlok automatikusan létrejönnek. Ellenőrizze ezeket a fájlokat a munkakönyvtárban:
![]()
Mivel a legtöbb telepített függőség a node_modules mappát, ajánlatos ezt a mappát nem commitolni a verziókövető tárhelybe. A telepített függőségek számának növekedésével a node_modules mérete is növekszik.
Ezzel szemben a package-lock.json fájl nyilvántartja a pontosan telepített verziókat, így nincs szükség a node_modules explicit belefoglalására. Ellentétben a node_modules mappával, ezt a fájlt commitolhatja a verziókövető tárhelyébe, mert részletes képet ad az összes függőségéről és azok verzióiról.
- Telepítés a package.json
A package.json és package-lock.json fájlok lehetővé teszik, hogy ugyanazokat a projektfüggőségeket állítsa be a projektfejlesztés megkezdése előtt. Navigáljon a könyvtárfájához, és hozzon létre egy új mappát a locatorral azonos könyvtárszinten. Nevezze el az új mappát így: cloned_locator:
|
1 2 |
cd .. mkdir cloned_locator |
Ezután lépjen be a cloned_locator:
|
1 |
cd cloned_locator |
Importálja a package.json és package-lock.json fájlokat a locator könyvtárból a cloned_locator:
|
1 |
cp ../locator/package.json ../locator/package-lock.json . |
A . az aktuális mappát jelöli. Telepítse a szükséges modulokat a következő paranccsal:
|
1 |
npm i |
Kezdetben az npm ellenőrzi a package-lock.json fájlt a modulok telepítéséhez. Ha a lock fájl nem érhető el, akkor a package.json fájlt olvassa be a telepítések meghatározásához.
Általánosságban elmondható, hogy a package-lock.json fájlból történő telepítés egyszerű, mert a lock fájl tartalmazza a modulok és függőségeik pontos verzióját. Ez azt jelenti, hogy amikor a package.json, npm az npm megspórolja a kompatibilis és stabil verzió meghatározásához szükséges plusz időt.
Hagyja figyelmen kívül a fejlesztési függőségeket a --production tag hozzáadásával:
|
1 |
npm i --production |
Ezután lépjen vissza a locatorhoz:
|
1 |
cd ../locator |
- Globális telepítések
Eddig a npm modulokat helyileg telepítettük. Van azonban lehetőség a csomagok globális telepítésére is, és azok parancssorból vagy CLI-ből történő használatára. Például navigálhat az aktuális locator projektben a Hexo könyvtár használatával, és kezelheti statikus webhelyét. Használja a következő parancsot a -g taggel a Hexo CLI globális telepítéséhez:
|
1 |
npm i hexo-cli -g |
|
Megjegyzés: Ha hibaüzenetet kap a csomagok globális telepítése során, próbálja meg ezt a parancsot sudo npm i hexo-cli -g root jogosultságokkal. |
A következő paranccsal ellenőrizheti, hogy a csomag sikeresen telepítve lett-e:
|
1 |
hexo --version |
A következő kimenetet fogja látni:

3. lépés: Modulok kezelése és frissítése
Egy csomagkezelőnek több dolga van, mint pusztán a Node.js modulok telepítése. Rengeteg testreszabási lehetőség áll rendelkezésre, ahol tetszés szerint listázhatja, frissítheti, eltávolíthatja a modulokat, vagy akár biztonsági réteget is hozzáadhat.
Ebben a részben megtanuljuk, hogyan kell:
-
Modulok listázása
-
Modulok frissítése
-
Modulok eltávolítása
-
Modulok auditálása
Beszéljük meg mindegyiket részletesen:
-
Modulok listázása
A modulok listázása, ahogy a név is sugallja, részletes információt nyújt a projektre telepített összes modulról. A package.json fájl olvasása helyett a ls vagy list parancsot használhatja a projekt moduljainak részletes megismeréséhez:
|
1 |
npm ls |
A következő kimenetet fogja látni:

Alapértelmezés szerint a ls parancs a teljes függőségi fát listázza, amely tartalmazza a projekt függőségeit és azokat a modulokat is, amelyektől függnek. Azonban madártávlati képet is kaphat, és kifejezetten egy adott modult is megcélozhat. Használja a következő parancsot a telepített modulok ellenőrzéséhez a függőségeik nélkül:
|
1 |
npm ls --depth 0 |
A következő kimenetet fogja látni:

-
Modulok frissítése
Mindig tanácsos naprakészen tartani az npm modult, hogy elkerülje a szoftverösszeomlásokat vagy konfliktusokat. Használja a következő parancsot annak ellenőrzésére, hogy szükség van-e frissítésre:
|
1 |
npm outdated |
A következő kimenetet fogja látni:

Ismerjük meg részletesen az egyes kifejezéseket:
- Package: Ez listázza a projektben jelenleg telepített Package csomagot.
- Current: Ez mutatja a csomag Current verzióját.
- Wanted: Shows the npm verzió, amely a legjobban megfelel a verziókövetelménynek a package.json.
- Legújabb: Megmutatja a legújabb npm kiadást, amelyre frissítenie kell, ha szükséges.
- Hely: A csomag Location a függőségi fában.
Ahogy javasoltuk, frissíthetjük az npm szoftvert egy stabil verzióra. Használja a következő parancsot a jelenlegi csomag frissítéséhez:
|
1 |
npm up eslint |
A következő kimenetet fogja látni:

Ahelyett, hogy egyenként frissítené őket, az összes modult egyszerre is frissítheti a up paranccsal:
|
1 |
npm up |
-
Modulok eltávolítása
Sokszor előfordulhat, hogy egy függőség nem a várt eredményt mutatja, és egyedi függőséget kell létrehoznia. Ilyen esetekben lehetősége van eltávolítani a függőségeket a package.json és package-lock.json fájlokból. Tegyük fel, hogy az axios függőségként van megadva, és nem nyújt kielégítő eredményt. Kétségtelenül el fogja távolítani ezt a tárolót a projektjéből. Használja az uninstall vagy un parancsot a axios:
|
1 |
npm un axios |
A következő kimenetet fogja látni:

Bár az uninstall parancs eltávolította a függőséget, nem kaptunk értesítést az eltávolításáról. Listázzuk ki a függőségeket, hogy lássuk, hány függőségünk van most:
|
1 |
npm ls --depth 0 |
A kimenetben látni fogja, hogy az axios függőség már nem szerepel a listában:

-
Modulok vizsgálata (Audit)
Ha a projektbe telepített függőségek potenciális biztonsági fenyegetésnek vannak kitéve, észlelheti őket. Először telepítenie kell a request modul egy elavult verzióját, hogy lássa, hogyan működik az audit modul:
|
1 |
npm i request@2.60.0 |
Látni fogja a kimenetet, amely felszólítja a fenyegetések vagy sebezhetőségek javítására:

A sebezhetőségek és fenyegetések részleteinek kibontásához használja az audit parancsot:
|
1 |
npm audit |
Egy részletes biztonsági jelentést fog látni:

Ezen sebezhetőségek feloldásához használja a fix parancsot:
|
1 |
npm audit fix |
A következő kimenetet fogja látni:

Észrevehette, hogy a kilenc sebezhetőségből kettő javításra került. A fennmaradó hét sebezhetőség azonban továbbra is fennáll a függőségeiben, mert az audit fix nem old meg minden problémát. A probléma megoldásához szükség lehet a függőség frissítésére egy magasabb verzióra egy másik API használatával. Legyen óvatos a frissítéskor, mert fennáll a valószínűsége annak, hogy feltöri a kódot a függőségi fa magasabb szintjein. Használja a következő parancsot annak ellenőrzésére, hogy a sebezhetőségek eltűntek-e:
|
1 |
npm audit fix --force |
Legyen körültekintő, amikor más API-t használ a sebezhetőségi fenyegetések megoldására, mert ha nem biztos benne, az a kód működésének meghibásodásához vezethet.
Összegzés
Összefoglalva, bemutattuk, hogyan kell használni a Node.js modulokat az npm és a package.json segítségével. Emellett áttekintettük a csomagfüggőségek listázásának, frissítésének, kezelésének, vizsgálatának és eltávolításának módszereit. Következő kihívásként arra bátorítjuk, hogy használja az ebben az útmutatóban tárgyalt fogalmakat, és kísérletezzen a csomagok telepítésével és tesztelésével saját maga. Megpróbálhat Node.js alkalmazásokat építeni és függőségeket konfigurálni a tanulás elmélyítése érdekében.
Emellett számos más tananyagot is találhat a Node.js és Javascript témakörökben a blogunkon:
- A Node.js telepítése CentOS 8 rendszerre: Teljes útmutató
- PostgreSQL összekapcsolása Node.js alkalmazásokkal: Útmutató
- Az Axios HTTP-kliens használata React alkalmazásban: Útmutató
- Node.js (Express.js) alkalmazás telepítése Dockerrel Ubuntu 20.04-en
Kellemes számítástechnikát!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.