Node.js je open-source multiplatformní runtime prostředí pro JavaScript. V posledních několika letech se stalo populární volbou pro vývoj back-endu webových aplikací díky svému rychlému výkonu vstupu/výstupu (I/O) a bezkonkurenční syntaxi JavaScriptu. Jeho adaptivní povaha navíc umožňuje rychlé přizpůsobení, díky čemuž tato serverová technologie vyniká nad svými konkurenty.
Node.js Package Manager — Přehled
Node.js Package Manager neboli npm je výchozí správce balíčků pro JavaScript. Npm se často používá k instalaci projektových skriptů a provozování externích modulů v Node.js projektu. Kromě toho sleduje moduly nainstalované v projektu pomocí souboru package.json , který se nachází v adresáři projektu. Npm ukládá a zaznamenává následující informace:
- Moduly vyžadované pro projekt a jejich nainstalované verze, pokud existují.
- Metadatový popis projektu, který mimo jiné obsahuje podrobnosti o autorovi a licenci.
- Spustitelné skripty pro automatizaci úkolů souvisejících s projektem nebo orientovaných na cíl.
V tomto návodu vás provedeme kroky použití modulů Node.js s npm a package.json.
Začněme!
Požadavky
Chcete-li postupovat podle tohoto návodu, budete potřebovat následující:
- Node.js musí být nainstalován ve vašem systému.
- Postupujte podle návodu pro instalaci Node.js na Ubuntu 18.04
-
Nejnovější verzi nainstalovaného Ubuntu ve vašem systému.
Krok 1: Vytvoření souboru package.json
Začněme náš návod na příkladu fiktivního projektu využívajícího modul Node.js locator . Cílem projektu je zjistit IP adresu uživatele a sdílet výstup jako zemi původu uživatele. Vzhledem k tomu, že se zaměřujeme na pochopení použití Node.js modulů s npm, není nutné psát moduly ručně. Místo toho budeme v našem projektu používat předinstalované a přizpůsobitelné balíčky.
JSON nebo JavaScript Object Notation je standardní formát používaný pro sdílení a přenos dat. Nejprve vytvoříme soubor JSON , který bude ukládat a spravovat softwarové závislosti. Ruční vytváření souboru package.json ručně je však namáhavé a časově náročné. Pro zjednodušení použijeme příkaz init k vytvoření souboru package.json namísto toho, abychom se snažili psát další bloky kódu pro psaní našeho JSON od nuly.
-
init příkaz
Nejprve vytvořme novou složku pomocí příkazu mkdir a pojmenujme ji locator:
|
1 |
mkdir locator |
Dále použijte příkaz cd pro přesun do nově vytvořené složky:
|
1 |
cd locator |
Poté zadejte npm pro inicializaci interaktivní výzvy:
|
1 |
npm init |
Poté uvidíte výstup:

1. name
Budete přesměrováni na name vašeho nového projektu; aktuální složku. V závorce uvidíte výchozí hodnoty (). Aby byl tento návod jednoduchý a snadno srozumitelný, zvolíme výchozí možnosti. Stiskněte ENTER pro potvrzení a pokračování.
2. version
Další hodnotou je version , což je klíčový požadavek, pokud sdílíte svůj projekt v npm repozitáři balíčků.
|
Note: Balíčky Node.js se řídí příručkou pro Semantic Versioning (semver). First number: The MAJOR version and it changes only when the API changes. Second Number: The MINOR version that changes when additional features are added. Last number: The PATCH version that changes an error or bug is resolved. |
3. description
Položka description je informativní řetězec, který popisuje fungování modulu Node.js. V naší ukázce projekt locator získá IP adresu uživatele a vrátí zemi původu.
|
Note: Většina modulů má soubor index.js jako vstupní bod. To je také vlastnost main v souboru package.json, což je vstupní bod pro moduly npm. Pokud však soubor package.json nebyl nalezen, Node.js načte index.js automaticky. |
4. test command
Jedná se o spustitelný skript nebo příkaz ke spuštění testů vašeho projektu. Vzhledem k tomu, že testování přesahuje rámec našeho návodu, přeskočme jej a stiskněme ENTER.
5. init command
Příkaz init se zeptá na GitHub Repository projektu. Tuto část opět přeskočme a pokračujme.
6. keywords
Klíčová slova je pole řetězců používaných k vyhledávání repozitáře. Doporučuje se udržovat klíčová slova přesná a relevantní pro váš projekt, aby byla snadno sledovatelná.
Uveďte tato klíčová slova jako řetězce a oddělte je čárkami. V našem projektu zadejte ip, country, latitude, a longitude na příkazové řádce a uvidíte je zahrnuté jako klíčová slova v package.json.
7. author
Berte pole author jako zpětnou vazbu a způsob interakce s vašimi uživateli. Pokud například uživatelé zjistí chybu ve vašem modulu, mohou toto pole použít k tomu, aby vás upozornili a chyba byla vyřešena.
-
Formát: "Jméno \<E-mail\> (Webová stránka)".
-
Ukázka: "Paul\<paul@your_domain\> (https://your_domain)"
-
Přidání e-mailu a webových stránek je volitelné. Můžete však uvést platného autora a přidat své kontaktní údaje jako author. Potvrďte údaje a stiskněte ENTER.
8. license
Pole license ilustruje právní podmínky, které uživatelé musí znát při používání vašeho modulu. Vzhledem k tomu, že Node.js moduly jsou open source, npm jej automaticky nakonfiguruje na ISC-license .
Přejděte na stránku s licencemi open source a vyberte Open Source Initiative, která nejlépe vyhovuje vašim potřebám. Na příkazové řádce zadejte UNLICENSED, pokud pro svůj repozitář licenci nepotřebujete. V našem návodu použijeme výchozí licenci ISC. Stiskněte ENTER pro dokončení tohoto procesu.
Příkaz init vytvoří soubor package.json a zobrazí výsledek:

Poté stiskněte ENTER pro pokračování a vytvoření souboru package.json . Náš soubor JSON si bude uchovávat záznamy o všech modulech a balíčcích, které v našem projektu nainstalujeme.
V dalším kroku budeme instalovat závislosti a moduly Node.js.
Krok 2: Instalace závislostí a modulů
Vytváření vlastních externích knihoven je časově náročné a vyžaduje značné úsilí. Nejefektivnějším způsobem je naopak instalace předdefinovaných závislostí a externích knihoven. V našem návodu použijeme knihovnu HTTP, která našemu ukázkovému lokalizačnímu modulu umožní odeslat požadavek na externí API za účelem sběru geografických dat.
V této příručce použijeme knihovnu axios k provádění HTTP požadavků. Nejprve nainstalujme axios:
|
1 |
npm install axios --save |
Začněte instalací balíčku npm a následně je uveďte oddělené mezerami. Také přidejte příznak --save , abyste zajistili, že se projekt uloží jako závislost projektu.
Uvidíte výstup:

Otevřete soubor package.json pomocí nano nebo jakéhokoli jiného textového editoru podle vašeho výběru:
|
1 |
nano package.json |
Všimněte si nově přidané vlastnosti zvýrazněné ve spodní části bloku kódu:

-
Stažení vývojových závislostí
Vývojové závislosti jsou balíčky používané při vývoji projektu a nemají žádné využití v produkci nebo při údržbě projektu. I když tyto závislosti mohou v produkčním prostředí působit neúčinně, hrají významnou roli při psaní a přepisování kódu.
Stejně jako nástroje pro kontrolu kódu (lintery) hrají vývojové závislosti zásadní roli ve vývoji softwaru. Vývojáři většinou používají nástroje pro kontrolu kódu (lintery) k udržení jednotnosti a konzistence stylu během vývoje projektu, což je jinak v produkci zbytečné.
Nainstalujme linter jako vývojovou závislost pro váš projekt. Použijte také příznak --save-dev pro uložení eslint jako závislosti potřebné pro vývoj:
|
1 |
npm i eslint@6.0.0 --save-dev |
Přidali jsme @6.0.0 do našich závislostí, takže když aktualizujeme moduly, označí se verzí. Symbol @ upozorní npm , aby vyhledal konkrétní značku, kterou chcete nainstalovat. Nyní znovu otevřete soubor package.json :
|
1 |
nano package.json |
Uvidíte výstup:

- Automaticky generované soubory: node_modules a package-lock.json
Na začátku se při instalaci balíčku do projektu Node.js automaticky vytvoří soubory package.json a package-lock.json . Ověřte přítomnost těchto souborů v pracovním adresáři:
![]()
Vzhledem k tomu, že většina nainstalovaných závislostí je uložena v node_modules složku, doporučuje se tuto složku neodesílat do vašeho repozitáře se správou verzí. S rostoucím počtem nainstalovaných závislostí se velikost node_modules také zvětšuje.
Naopak soubor package-lock.json uchovává záznam o přesných nainstalovaných verzích, takže není nutné explicitně zahrnovat node_modules. Na rozdíl od složky node_modules můžete tento soubor odeslat do svého repozitáře se správou verzí, protože poskytuje podrobný přehled o všech vašich závislostech včetně jejich verzí.
- Instalace pomocí package.json
Soubory package.json a package-lock.json vám umožňují nastavit stejné závislosti projektu před zahájením vývoje projektu. Přejděte do svého adresářového stromu a vytvořte novou složku na stejné úrovni adresáře jako locator. Pojmenujte novou složku jako cloned_locator:
|
1 2 |
cd .. mkdir cloned_locator |
Dále se přesuňte do cloned_locator:
|
1 |
cd cloned_locator |
Importujte soubory package.json a package-lock.json z locator do cloned_locator:
|
1 |
cp ../locator/package.json ../locator/package-lock.json . |
Znak . označuje aktuální složku. Nainstalujte požadované moduly pomocí následujícího příkazu:
|
1 |
npm i |
Na začátku npm zkontroluje soubor package-lock.json pro instalaci modulů. Pokud soubor lock není k dispozici, přečte soubor package.json pro určení instalací.
Obecně je instalace ze souboru package-lock.json jednoduchá, protože soubor lock obsahuje přesnou verzi modulů a jejich závislostí. To znamená, že když instalujete pomocí package.json, npm ušetří čas potřebný k vyhledání kompatibilní a stabilní verze.
Ignorujte vývojové závislosti přidáním tagu --production :
|
1 |
npm i --production |
Poté se vraťte zpět do locatoru:
|
1 |
cd ../locator |
- Globální instalace
Dosud jsme instalovali moduly npm lokálně. Máte však také možnost nainstalovat balíčky globálně a používat je prostřednictvím příkazového řádku (shell) nebo CLI. Můžete například spravovat aktuální projekt locator pomocí knihovny Hexo a spravovat svůj statický web. Použijte následující příkaz s tagem -g pro globální instalaci Hexo CLI:
|
1 |
npm i hexo-cli -g |
|
Poznámka: Pokud při globální instalaci balíčků narazíte na chybu, zkuste tento příkaz sudo npm i hexo-cli -g s oprávněními roota. |
Pomocí následujícího příkazu ověřte, zda byl balíček úspěšně nainstalován:
|
1 |
hexo --version |
Uvidíte výstup:

Krok 3: Správa a aktualizace modulů
Správce balíčků má na práci více než pouhou instalaci modulů Node.js. K dispozici je spousta možností přizpůsobení, kde můžete podle potřeby vypisovat, aktualizovat, odinstalovávat nebo dokonce přidat bezpečnostní vrstvu.
V této části se naučíme, jak:
-
Vypsat moduly
-
Aktualizovat moduly
-
Odinstalovat moduly
-
Auditovat moduly
Pojďme si každý z nich podrobně probrat:
-
Výpis modulů
Výpis modulů, jak název napovídá, vám poskytne podrobnosti o všech modulech nainstalovaných v projektu. Místo čtení souboru package.json můžete použít příkaz ls nebo list k podrobnému zobrazení modulů vašeho projektu:
|
1 |
npm ls |
Uvidíte výstup:

Ve výchozím nastavení příkaz ls vypíše celý strom závislostí, který zahrnuje závislosti projektu a moduly, na kterých závisí. Můžete však získat i celkový přehled a explicitně zacílit na konkrétní modul. Pomocí následujícího příkazu zkontrolujte moduly, které jste nainstalovali, bez jejich závislostí:
|
1 |
npm ls --depth 0 |
Uvidíte výstup:

-
Aktualizace modulů
Vždy se doporučuje udržovat moduly npm aktualizované, abyste se vyhnuli pádům softwaru nebo konfliktům. Pomocí následujícího příkazu zkontrolujte, zda je nutná aktualizace:
|
1 |
npm outdated |
Uvidíte výstup:

Pojďme si podrobně vysvětlit jednotlivé pojmy:
- Package: Vypisuje aktuální Package nainstalovaný ve vašem projektu.
- Current: Zobrazuje Current verzi balíčku.
- Wanted: Zobrazuje npm verzi, která nejlépe odpovídá požadavku na verzi v package.json.
- Nejnovější: Ukazuje nejnovější npm vydanou verzi, kterou musíte v případě potřeby aktualizovat.
- Umístění: Balíček Location v závislostním stromu.
Jak bylo navrženo, můžeme aktualizovat náš npm na stabilní verzi. Pro aktualizaci aktuálního balíčku použijte následující příkaz:
|
1 |
npm up eslint |
Uvidíte výstup:

Místo toho, abyste je aktualizovali jeden po druhém, můžete také aktualizovat všechny moduly najednou pomocí up příkazu:
|
1 |
npm up |
-
Odinstalace modulů
Mnohokrát se může stát, že závislost neposkytuje očekávaný výstup a vy potřebujete vytvořit přizpůsobenou závislost. V takových případech máte možnost odinstalovat závislosti ze svých souborů package.json a package-lock.json . Předpokládejme, že máte axios jako závislost a nedaří se jí poskytnout uspokojivý výsledek. Tento repozitář bezpochyby ze svého projektu odstraníte. Použijte uninstall nebo un příkaz k odstranění axios:
|
1 |
npm un axios |
Uvidíte výstup:

Ačkoli příkaz uninstall závislost odstranil, neobdrželi jsme o jejím odstranění žádné oznámení. Pojďme vypsat závislosti, abychom viděli, kolik závislostí nyní máme:
|
1 |
npm ls --depth 0 |
Uvidíte výstup, přičemž v seznamu nebude přítomna žádná závislost axios:

-
Audit modulů
Pokud jsou závislosti nainstalované ve vašem projektu náchylné k jakékoli potenciální bezpečnostní hrozbě, můžete je detekovat. Nejprve musíte nainstalovat zastaralou verzi modulu request, abyste viděli, jak modul audit funguje:
|
1 |
npm i request@2.60.0 |
Uvidíte výstup vyzývající k opravě hrozeb nebo zranitelností:

Chcete-li zobrazit podrobnosti o zranitelnostech a hrozbách, použijte audit příkaz:
|
1 |
npm audit |
Uvidíte podrobnou bezpečnostní zprávu:

K vyřešení těchto zranitelností použijte fix příkaz:
|
1 |
npm audit fix |
Uvidíte výstup:

Možná jste si všimli, že dvě z devíti zranitelností byly opraveny. Zbývajících sedm zranitelností však ve vašich závislostech přetrvává, protože audit fix neřeší všechny problémy. Chcete-li tento problém vyřešit, možná budete muset aktualizovat svou závislost na vyšší verzi pomocí jiného API. Při aktualizaci buďte opatrní, protože existuje pravděpodobnost, že můžete narušit kód výše v závislostním stromu. Použijte následující příkaz k potvrzení, že zranitelnosti zmizely:
|
1 |
npm audit fix --force |
Při použití jiného API k řešení hrozeb zranitelností buďte opatrní, protože pokud si jím nejste jisti, může to vést k narušení funkčnosti kódu.
Závěr
Na závěr jsme si ukázali, jak používat moduly Node.js s npm a package.json. Kromě toho jsme prošli metody výpisu, aktualizace, správy, auditu a odinstalace závislostí našich balíčků. Jako další výzvu vás doporučujeme, abyste využili koncepty popsané v této příručce a sami experimentovali s instalací a testováním balíčků. Můžete se také pokusit vytvářet aplikace v Node.js a konfigurovat závislosti pro prohloubení svých znalostí.
Kromě toho existuje mnoho dalších výukových materiálů o tématech Node.js a JavaScriptu, které najdete na našem blogu:
- Instalace Node.js na CentOS 8: Kompletní průvodce
- Připojení PostgreSQL k aplikacím v Node.js: Návod
- Použití HTTP klienta Axios v aplikaci React: Návod
- Jak nasadit aplikaci Node.js (Express.js) pomocí Dockeru na Ubuntu 20.04
Příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.