Zpět na blog

Použití modulů Node.js s npm a package.json: Návod

Použití modulů Node.js s npm a package.json: Návod

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í:

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:

Dále použijte příkaz cd pro přesun do nově vytvořené složky:

Poté zadejte npm pro inicializaci interaktivní výzvy:

Poté uvidíte výstup:

Node.js Modules npm init 1

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:

Node.js Modules npm init

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:

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:

Node.js Modules install axios

Otevřete soubor package.json pomocí nano nebo jakéhokoli jiného textového editoru podle vašeho výběru:

Všimněte si nově přidané vlastnosti zvýrazněné ve spodní části bloku kódu:

Node.js Modules package json

  • 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:

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 :

Uvidíte výstup:

dev package json

  • 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:

Dále se přesuňte do cloned_locator:

Importujte soubory package.json a package-lock.json z locator do cloned_locator:

Znak . označuje aktuální složku. Nainstalujte požadované moduly pomocí následujícího příkazu:

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 :

Poté se vraťte zpět do locatoru:

  • 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:

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:

Uvidíte výstup:

hexo version

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:

  1. Vypsat moduly

  2. Aktualizovat moduly

  3. Odinstalovat moduly

  4. Auditovat moduly

Pojďme si každý z nich podrobně probrat:

  1. 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:

Uvidíte výstup:

npm list op

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í:

Uvidíte výstup:

npm list depth zero

  1. 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:

Uvidíte výstup:

Outdated

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:

Uvidíte výstup:

update eslint

Místo toho, abyste je aktualizovali jeden po druhém, můžete také aktualizovat všechny moduly najednou pomocí up příkazu:

  1. 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:

Uvidíte výstup:

Uninstall axios

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:

Uvidíte výstup, přičemž v seznamu nebude přítomna žádná závislost axios:

npm list

  1. 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:

Uvidíte výstup vyzývající k opravě hrozeb nebo zranitelností:

add request

Chcete-li zobrazit podrobnosti o zranitelnostech a hrozbách, použijte audit příkaz:

Uvidíte podrobnou bezpečnostní zprávu:

Node.js Modules Audit security report

K vyřešení těchto zranitelností použijte fix příkaz:

Uvidíte výstup:

audit update

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:

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:

Příjemnou práci s počítačem!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.