Powrót do bloga

Używanie modułów Node.js z npm i package.json: Poradnik

Używanie modułów Node.js z npm i package.json: Poradnik

Node.js to wieloplatformowe środowisko uruchomieniowe JavaScript o otwartym kodzie źródłowym. W ciągu ostatnich kilku lat stało się ono popularnym wyborem do tworzenia backendu stron internetowych ze względu na szybką wydajność wejścia/wyjścia (I/O) i bezkonkurencyjną składnię JavaScript. Ponadto jego elastyczny charakter pozwala na szybką personalizację, co wyróżnia tę technologię serwerową na tle konkurencji.

Menedżer pakietów Node.js — przegląd

Node.js Package Manager lub npm to domyślny menedżer pakietów dla języka JavaScript. Npm jest często używany do instalowania skryptów projektowych i obsługi zewnętrznych modułów w projekcie Node.js. Ponadto śledzi moduły zainstalowane w projekcie za pomocą pliku package.json , który znajduje się w katalogu projektu’s. Npm przechowuje i zapisuje następujące informacje:

  • Moduły wymagane w projekcie i ich zainstalowane wersje, jeśli istnieją.
  • Opis metadanych projektu, który zawiera między innymi szczegóły dotyczące autora i licencji.
  • Skrypty wykonywalne do automatyzacji zadań związanych z projektem lub zorientowanych na cel.

W tym samouczku przeprowadzimy Cię przez kroki korzystania z modułów Node.js z npm i package.json.

Zaczynajmy!

Wymagania wstępne

Aby móc śledzić ten samouczek, będziesz potrzebować:

Krok 1: Utwórz plik package.json

Zacznijmy nasz samouczek od przykładowego, próbnego projektu korzystającego z modułu Node.js locator . Projekt ma na celu pobranie adresu IP użytkownika i udostępnienie wyniku jako kraju jego pochodzenia. Ponieważ skupiamy się na zrozumieniu korzystania z modułów Node.js z npm, nie ma potrzeby ręcznego pisania modułów. Zamiast tego użyjemy preinstalowanych i konfigurowalnych pakietów w naszym projekcie.

JSON lub JavaScript Object Notation to standardowy format używany do udostępniania i przesyłania danych. Na początku utworzymy plik JSON, który będzie przechowywać zależności oprogramowania i zarządzać nimi. Jednak ręczne tworzenie pliku package.json jest uciążliwe i czasochłonne. Dla uproszczenia użyjemy polecenia init do utworzenia pliku package.json zamiast wkładać wysiłek w pisanie dodatkowych bloków kodu w celu stworzenia naszego pliku JSON od zera.

  • init polecenie

Najpierw utwórzmy nowy folder za pomocą polecenia mkdir i nazwijmy go locator:

Następnie użyj polecenia cd , aby przejść do nowo utworzonego folderu:

Następnie wpisz npm , aby zainicjować interaktywny monit:

Następnie zobaczysz dane wyjściowe:

Node.js Modules npm init 1

1. name

Zostaniesz przekierowany do pola name swojego nowego projektu; bieżącego folderu. Zobaczysz domyślne wartości w nawiasach (). Aby ten samouczek był prosty i łatwy do zrozumienia, wybierzemy opcje domyślne. Naciśnij ENTER , aby zaakceptować i kontynuować.

2. version

Kolejną wartością jest nazwa pola version , co jest kluczowym wymaganiem, jeśli udostępniasz swój projekt w repozytorium pakietów npm .

Note: Pakiety Node.js są zgodne z przewodnikiem Semantic Versioning (semver).

Pierwsza cyfra: wersja MAJOR , która zmienia się tylko wtedy, gdy zmienia się API.

Druga cyfra: wersja MINOR , która zmienia się po dodaniu dodatkowych funkcji.

Ostatnia cyfra: wersja PATCH , która zmienia się, gdy błąd zostanie naprawiony.

3. description

Pole description to ciąg informacyjny opisujący działanie modułu Node.js. W naszej wersji demonstracyjnej projekt locator pobierze adres IP użytkownika i zwróci kraj pochodzenia.

Note: Zazwyczaj moduły posiadają plik index.js jako punkt wejścia. Jest to również właściwość main w pliku package.json, czyli punkt wejścia dla modułów npm. Jeśli jednak plik package.json nie zostanie znaleziony, Node.js automatycznie załaduje plik index.js .

4. test polecenie

Jest to skrypt wykonywalny lub polecenie służące do uruchamiania testów projektu. Ponieważ testowanie wykracza poza zakres naszego samouczka, pomińmy je i naciśnijmy ENTER.

5. init polecenie

Polecenie init zapyta o repozytorium GitHub projektu. Ponownie pomińmy tę część i przejdźmy dalej.

6. keywords

Słowa kluczowe to tablica ciągów znaków używana do wyszukiwania repozytorium. Zaleca się, aby słowa kluczowe były dokładne i powiązane z projektem, co ułatwi ich śledzenie.

Wymień te słowa kluczowe jako ciągi znaków i rozdziel je przecinkami. W naszym projekcie wpisz ip, country, latitude, oraz longitude w wierszu poleceń, a zobaczysz je dołączone jako słowa kluczowe w package.json.

7. author

Traktuj pole author jako informację zwrotną i sposób interakcji z użytkownikami. Na przykład, jeśli użytkownicy wykryją błąd w Twoim module, mogą użyć tego pola, aby Cię o tym powiadomić i uzyskać pomoc w rozwiązaniu problemu.

  • Format: "Nazwa \<E-mail\> (Strona internetowa)".

    • Demo: "Paul\<paul@your_domain\> (https://your_domain)"

Dodanie adresu e-mail i strony internetowej jest opcjonalne. Możesz jednak określić prawidłowego autora i dodać swoje dane kontaktowe jako author. Potwierdź szczegóły i naciśnij ENTER.

8. license

Pole license ilustruje warunki prawne, które użytkownicy muszą znać podczas korzystania z Twojego modułu. Ponieważ Node.js moduły są open source, npm konfiguruje je na ISC-license automatycznie.

Przejdź do strony licencji open source i wybierz tę z Open Source Initiative, która najlepiej odpowiada Twoim potrzebom. Wpisz UNLICENSED w wierszu poleceń, jeśli nie potrzebujesz licencji dla swojego repozytorium. W naszym samouczku użyjemy domyślnej licencji ISC. Naciśnij ENTER , aby zakończyć ten proces.

Polecenie init utworzy plik package.json i wyświetli wynik:

Node.js Modules npm init

Następnie naciśnij ENTER, aby kontynuować i utworzyć plik package.json . Nasz plik JSON będzie przechowywać rejestr wszystkich modułów i pakietów, które zainstalujemy w naszym projekcie.

W kolejnym kroku zainstalujemy zależności i moduły Node.js.

Krok 2: Instalacja zależności i modułów

Tworzenie niestandardowych bibliotek zewnętrznych jest czasochłonne i wymaga dużego wysiłku. Alternatywnie, najskuteczniejszym sposobem jest instalacja predefiniowanych zależności i bibliotek zewnętrznych. W naszym samouczku użyjemy biblioteki HTTP , aby umożliwić naszemu demonstracyjnemu modułowi lokalizatora wykonywanie zewnętrznych żądań API w celu zbierania danych geograficznych.

W tym poradniku użyjemy biblioteki axios do wykonywania żądań HTTP. Najpierw zainstalujmy axios:

Zacznij od zainstalowania pakietu npm, a następnie wymień je, oddzielając spacjami. Dołącz również znacznik --save , aby upewnić się, że projekt zostanie zapisany jako zależność projektu.

Zobaczysz następujący wynik:

Node.js Modules install axios

Otwórz plik package.json za pomocą nano lub dowolnego innego edytora tekstu:

Zwróć uwagę na nowo dodaną właściwość wyróżnioną na dole bloku kodu:

Node.js Modules package json

  • Pobieranie zależności deweloperskich

Zależności deweloperskie (development dependencies) to pakiety używane podczas tworzenia projektu, które nie mają zastosowania w środowisku produkcyjnym ani przy utrzymaniu projektu. Choć zależności te mogą wydawać się nieprzydatne w obszarach produkcyjnych, odgrywają one znaczącą rolę w pisaniu i przepisywaniu kodu.

Podobnie jak lintery kodu, zależności deweloperskie odgrywają kluczową rolę w tworzeniu oprogramowania. Programiści najczęściej używają code linters do zachowania jednolitości i spójności stylu podczas rozwoju projektu, co w przeciwnym razie byłoby bezużyteczne na produkcji.

Zainstalujmy linter jako zależność deweloperską dla Twojego projektu. Użyj również flagi --save-dev , aby zapisać eslint jako zależność wymaganą do rozwoju projektu:

Dodaliśmy @6.0.0 do naszych zależności, aby przy aktualizacji modułów były one oznaczane wersją. Symbol @ powiadomi npm , aby wyszukać konkretny tag, który chcesz zainstalować. Teraz otwórz ponownie plik package.json :

Zobaczysz następujący wynik:

dev package json

  • Automatycznie generowane pliki: node_modules oraz package-lock.json

Na początku, podczas instalowania pakietu w projekcie Node.js, pliki package.json oraz package-lock.json są tworzone automatycznie. Potwierdź obecność tych plików w katalogu roboczym:

Ponieważ większość zainstalowanych zależności jest przechowywana w node_modules folder, zaleca się nie dodawać tego folderu do repozytorium kontrolowanego wersjami. Wraz ze wzrostem liczby zainstalowanych zależności, rozmiar node_modules również rośnie.

Z kolei plik package-lock.json przechowuje informacje o dokładnych zainstalowanych wersjach, więc nie ma potrzeby dołączania node_modules jawnie. W przeciwieństwie do folderu node_modules możesz dodać ten plik do swojego repozytorium kontrolowanego wersjami, ponieważ zawiera on szczegółowy opis wszystkich zależności wraz z ich wersjami.

  • Instalacja przy użyciu package.json

Pliki package.json oraz package-lock.json pozwalają na skonfigurowanie tych samych zależności projektu przed rozpoczęciem jego rozwoju. Przejdź do drzewa katalogów i utwórz nowy folder na tym samym poziomie katalogu co locator. Nazwij nowy folder cloned_locator:

Następnie przejdź do cloned_locator:

Zaimportuj pliki package.json oraz package-lock.json z locator do cloned_locator:

Znak . oznacha bieżący folder. Zainstaluj wymagane moduły za pomocą następującego polecenia:

Początkowo npm sprawdzi plik package-lock.json w celu zainstalowania modułów. Jeśli plik lock jest niedostępny, odczyta plik package.json w celu określenia instalacji.

Ogólnie rzecz biorąc, instalacja z package-lock.json jest prosta, ponieważ plik lock zawiera dokładną wersję modułów i ich zależności. Oznacza to, że podczas instalacji przy użyciu package.json, npm zaoszczędzi dodatkowy czas wymagany na znalezienie kompatybilnej i stabilnej wersji.

Zignoruj zależności deweloperskie, dodając flagę --production :

Następnie wróć do locator:

  • Instalacje globalne

Do tej pory instalowaliśmy moduły npm lokalnie. Masz jednak również alternatywę w postaci globalnej instalacji pakietów i korzystania z nich za pomocą poleceń powłoki lub CLI. Na przykład możesz zarządzać bieżącym projektem locator za pomocą biblioteki Hexo i zarządzać swoją statyczną stroną internetową. Użyj następującego polecenia z flagą -g , aby zainstalować globalnie CLI Hexo :

Uwaga: Jeśli napotkasz błąd podczas globalnej instalacji pakietów, wypróbuj to polecenie sudo npm i hexo-cli -g  z uprawnieniami administratora (root).

Użyj następującego polecenia, aby zweryfikować, czy pakiet został pomyślnie zainstalowany:

Zobaczysz dane wyjściowe:

hexo version

Krok 3: Zarządzanie i aktualizacja modułów

Menedżer pakietów ma do zaoferowania więcej niż tylko instalowanie modułów Node.js. Istnieje wiele opcji dostosowywania, dzięki którym możesz wyświetlać listę, aktualizować, odinstalowywać, a nawet dodawać warstwę zabezpieczeń według własnego uznania.

W tej sekcji dowiemy się, jak:

  1. Wyświetlać listę modułów

  2. Aktualizować moduły

  3. Odinstalowywać moduły

  4. Przeprowadzać audyt modułów

Omówmy każdy z nich szczegółowo:

  1. Wyświetlanie listy modułów

Wyświetlanie listy modułów, jak sama nazwa wskazuje, dostarczy szczegółowych informacji o wszystkich modułach zainstalowanych w projekcie. Zamiast czytać plik package.json, możesz użyć polecenia ls lub list , aby szczegółowo poznać moduły swojego projektu:

Zobaczysz dane wyjściowe:

npm list op

Domyślnie polecenie ls wyświetla całe drzewo zależności, które obejmuje zależności projektu oraz moduły, od których one zależą. Możesz jednak również uzyskać ogólny widok i jawnie wskazać konkretny moduł. Użyj następującego polecenia, aby sprawdzić zainstalowane moduły bez ich zależności:

Zobaczysz dane wyjściowe:

npm list depth zero

  1. Aktualizacja modułów

Zawsze zaleca się aktualizowanie modułów npm, aby uniknąć awarii oprogramowania lub konfliktów. Użyj następującego polecenia, aby sprawdzić, czy istnieje potrzeba aktualizacji:

Zobaczysz dane wyjściowe:

Outdated

Omówmy szczegółowo każdy termin:

  • Package: Wyświetla listę bieżących Package zainstalowanych w Twoim projekcie.
  • Current: Pokazuje Current wersję pakietu.
  • Wanted: Pokazuje npm wersję, która najlepiej pasuje do wymagań wersji w pliku package.json.
  • Najnowsza: Pokazuje najnowszą wersję npm wydaną, którą należy zaktualizować w razie potrzeby.
  • Lokalizacja: Pakiet Lokalizacja w drzewie zależności.

Zgodnie z sugestią, możemy zaktualizować nasz npm do stabilnej wersji. Użyj następującego polecenia, aby zaktualizować bieżący pakiet:

Zobaczysz wynik:

update eslint

Zamiast aktualizować je pojedynczo, możesz również zaktualizować wszystkie moduły naraz za pomocą polecenia up :

  1. Odinstalowywanie modułów

Często zależność może nie dawać oczekiwanych rezultatów i konieczne jest stworzenie niestandardowej zależności. W takich sytuacjach masz możliwość odinstalowania zależności ze swoich plików package.json oraz package-lock.json . Przypuśćmy, że masz axios jako zależność i nie zapewnia ona zadowalających wyników. Bez wątpienia usuniesz to repozytorium ze swojego projektu. Użyj polecenia uninstall lub un , aby usunąć axios:

Zobaczysz wynik:

Uninstall axios

Chociaż polecenie uninstall usunęło zależność, nie otrzymaliśmy żadnego powiadomienia o jej usunięciu. Wyświetlmy listę zależności, aby zobaczyć, ile ich teraz mamy:

Zobaczysz wynik bez zależności axios na liście:

npm list

  1. Audytowanie modułów

Jeśli zależności zainstalowane w Twoim projekcie są podatne na potencjalne zagrożenia bezpieczeństwa, możesz je wykryć. Najpierw musisz zainstalować przestarzałą wersję modułu request, aby zobaczyć, jak działa moduł audytu:

Zobaczysz wynik sugerujący naprawienie zagrożeń lub podatności:

add request

Aby rozwinąć szczegóły dotyczące podatności i zagrożeń, użyj polecenia audit :

Zobaczysz szczegółowy raport bezpieczeństwa:

Node.js Modules Audit security report

Aby rozwiązać te podatności, użyj polecenia fix :

Zobaczysz wynik:

audit update

Możesz zauważyć, że dwie z dziewięciu podatności zostały naprawione. Jednak pozostałe siedem podatności nadal występuje w Twoich zależnościach, ponieważ polecenie audit fix nie rozwiązuje wszystkich problemów. Aby rozwiązać ten problem, może być konieczna aktualizacja zależności do wyższej wersji przy użyciu innego API. Zachowaj ostrożność podczas aktualizacji, ponieważ istnieje prawdopodobieństwo, że możesz uszkodzić kod znajdujący się wyżej w drzewie zależności. Użyj następującego polecenia, aby potwierdzić, że podatności zniknęły:

Bądź ostrożny przy używaniu innego API do rozwiązywania zagrożeń związanych z podatnościami, ponieważ jeśli nie masz pewności, może to doprowadzić do uszkodzenia funkcjonalności kodu.

Podsumowanie

Podsumowując, zademonstrowaliśmy, jak używać modułów Node.js z npm oraz pliku package.json. Ponadto omówiliśmy metody listowania, aktualizowania, zarządzania, audytowania i odinstalowywania zależności naszych pakietów. Jako kolejne wyzwanie zachęcamy do wykorzystania pojęć omówionych w tym przewodniku i samodzielnego eksperymentowania z instalowaniem i testowaniem pakietów. Możesz również spróbować tworzyć aplikacje Node.js i konfigurować zależności, aby poszerzyć swoją wiedzę.

Poza tym istnieje wiele innych materiałów szkoleniowych na temat Node.js i JavaScript, które można znaleźć na naszym blogu:

Miłego kodowania!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.