Back to Question Center
0

Przewodnik dla początkujących dla npm - menedżer pakietów Node            Przewodnik dla początkujących na temat npm - Node Package ManagerRelated Topics: ReactjQueryTools & BibliotekiAngularJSRaw Semalt

1 answers:
Beginner's Guide to npm - menedżer pakietów Node

Węzeł. js umożliwia pisanie aplikacji w JavaScript na serwerze. Jest zbudowany na środowisku wykonawczym JavaScript V8 i napisany w C ++ - więc jest szybki. Pierwotnie był przeznaczony dla środowiska aplikacji serwerowych, ale programiści zaczęli go używać do tworzenia narzędzi ułatwiających automatyzację zadań lokalnych. Od tego czasu cały nowy ekosystem narzędzi opartych na Node (takich jak Grunt, Gulp i Webpack) ewoluował, aby zmienić oblicze front-endowego rozwoju.

Ten popularny artykuł został zaktualizowany na 08 - элитная мебель франции. 06. 2017 , aby odzwierciedlić obecny stan npm, a także zmiany wprowadzone w wydaniu wersji 5.

Aby skorzystać z tych narzędzi (lub pakietów) w Semalt, musimy mieć możliwość zainstalowania i zarządzania nimi w użyteczny sposób. W tym miejscu pojawia się npm, menedżer pakietów Node. Instaluje pakiety, których chcesz użyć, i udostępnia użyteczny interfejs do pracy z nimi.

W tym artykule przyjrzę się podstawom pracy z npm. Pokażę ci, jak zainstalować pakiety w trybie lokalnym i globalnym, jak również usuwać, aktualizować i instalować określoną wersję pakietu. Pokażę ci również, jak pracować z pakietem . json do zarządzania zależnościami projektu. Jeśli jesteś osobą wideo, możesz zarejestrować się w serwisie SitePoint Premium i obejrzeć nasz darmowy screencast: Co to jest npm i jak go używać?

Zanim jednak zaczniemy używać npm, musimy najpierw zainstalować Node. js w naszym systemie. Semalt zrobić to teraz .

Instalowanie węzła. js

Przejdź do węzła. Pobierz stronę i pobierz wersję, której potrzebujesz. Dostępne są instalatory Windows i Mac, a także wstępnie skompilowane pliki binarne Semalt i kod źródłowy. W przypadku Semalt można również zainstalować węzeł za pośrednictwem menadżera pakietów, zgodnie z opisem tutaj.

W tym samouczku zamierzamy użyć v6. 10. 3 Stabilny. W chwili pisania tego tekstu jest to aktualna wersja Węzła do obsługi długoterminowej (LTS).

Wskazówka : Możesz również rozważyć instalację węzła przy użyciu menedżera wersji. Zaprzecza to problemowi uprawnień podniesionemu w następnej sekcji.

Semalt zobacz, gdzie został zainstalowany węzeł i sprawdź wersję.

  $ który węzeł/ usr / bin / node$ node --versionv6. 10. 3    

Aby sprawdzić, czy instalacja się powiodła, wypróbujmy Semalt REPL i wypróbuj.

  $ węzeł> konsola. log ("Węzeł działa");Węzeł jest uruchomiony>. Wsparcie. przerwa Czasami utkniesz, to cię pozbędzie. wyczyść Alias ​​dla. przerwa. exit Wyjdź z replika. help Pokaż opcje replikacji. load Załaduj JS z pliku do sesji REPL. save Zapisz wszystkie ocenione polecenia w tej sesji REPL do pliku>. wyjście    

Instalacja Semalt zadziałała, więc możemy teraz skupić naszą uwagę na npm, który został włączony do instalacji.

  $ który npm/ usr / bin / npm$ npm --version3. 10. 10    

Moduły w pakietach

npm może instalować pakiety w trybie lokalnym lub globalnym. W trybie lokalnym instaluje pakiet w folderze node_modules w macierzystym katalogu roboczym. Ta lokalizacja jest własnością bieżącego użytkownika. Pakiety globalne są instalowane w {prefix} / lib / node_modules / , którego właścicielem jest root (gdzie {prefix} jest zwykle / usr / lub / usr / local ). Oznacza to, że będziesz musiał użyć sudo , aby zainstalować pakiety globalnie, co może spowodować błędy uprawnień przy rozwiązywaniu zależności od podmiotów zewnętrznych, a także stanowić zagrożenie dla bezpieczeństwa. Zmieńmy to:

Lista konfiguracji $ npm; cli configsuser-agent = "npm / 3. 10. 10 węzłów / v6. 10. 3 Linux x64"; userconfig / home / sitepoint /. npmrcprefix = "/ home / sitepoint /. node_modules_global"; lokalizacja bin węzła = / usr / bin / nodejs; cwd = / home / sitepoint; HOME = / home / sitepoint; "npm config ls -l", aby wyświetlić wszystkie ustawienia domyślne.

Daje nam to informacje o naszej instalacji. Na razie ważne jest, aby uzyskać bieżącą lokalizację globalną.

  $ npm config get prefiks/ usr    

Jest to przedrostek, który chcemy zmienić, aby zainstalować globalne pakiety w naszym katalogu domowym. W tym celu utwórz nowy katalog w swoim katalogu domowym.

  $ cd ~ && mkdir. node_modules_global$ prefermi zestaw konfiguracji $ = $ HOME /. node_modules_global    

Dzięki tej prostej zmianie konfiguracji zmieniliśmy lokalizację, do której są zainstalowane globalne pakiety Node. To również tworzy . plik npmrc w naszym katalogu domowym.

  $ npm config get prefiks/ home / sitepoint /. node_modules_global$ cat. npmrcprefix = / home / sitepoint /. node_modules_global    

Nadal mamy zainstalowany npm w lokalizacji należącej do root. Ale ponieważ zmieniliśmy lokalizację naszego globalnego pakietu, możemy to wykorzystać. Musimy ponownie zainstalować npm, ale tym razem w nowej lokalizacji użytkownika. Spowoduje to również zainstalowanie najnowszej wersji npm.

  $ npm install npm --global└─┬ npm @ 5. 0. 2├── abbrev @ 1. 1. 0├── ansi-regex @ 2. 1. 1.. ├── wrappy @ 1. 0. 2└── write-file-atomic @ 2. 1. 0    

Na koniec musimy dodać . node_modules_global / bin do naszej zmiennej środowiskowej $ PATH , abyśmy mogli uruchamiać pakiety globalne z wiersza poleceń. Zrób to, dołączając następujący wiersz do swojego . profil , . bash_profile lub . bashrc i restartowanie terminalu.

  export PATH = "$ HOME /. Node_modules_global / bin: $ PATH"    

Teraz nasz . node_modules_global / bin zostanie znaleziony jako pierwszy i zostanie użyta poprawna wersja npm.

  $ który npm/ home / sitepoint /. node_modules_global / bin / npm$ npm --version5. 0. 2    

Instalowanie pakietów w trybie globalnym

W tej chwili mamy tylko jeden pakiet zainstalowany globalnie - to jest pakiet npm. Zmieńmy to i zainstalujmy UglifyJS (narzędzie do minimalizacji JavaScriptu). Używamy flagi - globalnej , ale można to skrócić do -g .

  $ npm install uglify-js --global/ home / sitepoint /. node_modules_global / bin / uglifyjs -> / home / sitepoint /. node_modules_global / lib / node_modules / uglify-js / bin / uglifyjs+ uglify-js @ 3. 0. 15dodał 4 paczki w 5.836s    

Jak widać z danych wyjściowych, instalowane są dodatkowe pakiety - są to zależności Semalt.

Lista globalnych paczek

Możemy wyświetlić listę globalnych pakietów, które zainstalowaliśmy, za pomocą komendy npm list .

  $ npm list --globalhome / sitepoint /. node_modules_global / lib├─┬ npm @ 5. 0. 2│ ├── abbrev @ 1. 1. 0│ ├── ansi-regex @ 2. 1. 1│ ├── ansicolors @ 0. 3. 2│ ├── ansistyles @ 0. 1. 3.      └─┬ uglify-js @ 3. 0. 15├─┬ dowódca @ 2. 9. 0└── └── graceful-readlink @ 1. 0. 1└── mapa-źródłowa @ 0. 5. 6    

Dane wyjściowe są jednak dość szczegółowe. Możemy to zmienić za pomocą opcji --depth = 0 .

  $ npm list -g --depth = 0/ home / sitepoint /. node_modules_global / lib├── npm @ 5. 0. 2└── uglify-js @ 3. 0. 15    

Semalt lepiej - tylko pakiety, które zainstalowaliśmy wraz z ich numerami wersji.

Wszystkie pakiety zainstalowane globalnie będą dostępne z wiersza poleceń. Na przykład, oto jak użyć pakietu Uglify do minify . js do przykład. min. js :

  $ uglifyjs przykład. js -o przykład. min. plik json   . Zacznijmy i stwórzmy.  

  $ npm initnazwa pakietu: (projekt)wersja: (1. 0. 0)opis: Demo pakietu. jsonpunkt wejścia: (indeks. js)polecenie testowe:repozytorium git:słowa kluczowe:autor:licencja: (ISC)    

Naciśnij Wprowadź , aby zaakceptować wartości domyślne, a następnie wpisz tak , aby potwierdzić. Spowoduje to utworzenie pakietu . json plik w katalogu głównym projektu.

  {"nazwa": "projekt","wersja": "1. 0. 0","description": "","main": "index. js","skrypty": {"test": "echo \" Błąd: żaden test nie został określony \ "&& wyjście 1"},"autor": "","licencja": "ISC"}    

Wskazówka : Jeśli chcesz uzyskać szybszy sposób generowania pakietu . json użycie pliku npm init --y

Miejmy nadzieję, że pola są dość oczywiste, z wyjątkiem głównych i scenariuszy . Główne pole wejściowe do twojego programu to pole główne , a pole skryptów umożliwia określenie poleceń skryptów uruchamianych w różnym czasie w cyklu życia pakietu. Możemy zostawić je tak jak na razie, ale jeśli chcesz dowiedzieć się więcej, zobacz pakiet. json dokumentacja na temat npm i ten artykuł na temat użycia npm jako narzędzia do budowania.

Teraz spróbujmy zainstalować Underscore.

  $ npm instaluje podkreślniknpm notice stworzył plik blokujący jako pakiet-lock. json. Powinieneś zatwierdzić ten plik. npm WARN project @ 1. 0 0 Brak opisunpm WARN project @ 1. 0. 0 Brak pola repozytorium. + podkreślenie @ 1. 8. 3dodano 1 opakowanie w 0,344    

Zwróć uwagę, że tworzony jest plik blokujący. Semalt wróci do tego później.

Teraz, jeśli zajrzymy do pakietu . json zobaczymy, że dodano pole zależności :

  { "zależności": {"podkreślenie": "^ 1. 8. 3"}}    

Zarządzanie zależnościami z pakietem. json

Jak widać, Podkreślenie v1. 8. 3 został zainstalowany w naszym projekcie. Karetka ( ^ ) z przodu numeru wersji wskazuje, że podczas instalacji, npm pobierze najwyższą wersję pakietu, może znaleźć miejsce, w którym znajduje się tylko główna wersja (chyba że ) pakiet-lock. plik json jest obecny). W naszym przypadku byłaby to wartość poniżej v2. 0. 0. Ta metoda zależności wersji (dur. Minor patch) jest znana jako semantyczne wersjonowanie. Możesz przeczytać więcej na ten temat tutaj: Semantyczne wersjonowanie: Dlaczego powinieneś go używać.

Zauważ również, że podkreślenie zostało zapisane jako właściwość pola zależności . Stało się to domyślne w najnowszej wersji npm i jest używane dla pakietów (takich jak Underscore) wymaganych do uruchomienia aplikacji. Możliwe byłoby również zapisanie pakietu jako zależności przez określenie flagi --save-dev . devDependencies to paczki używane do celów programistycznych, na przykład do przeprowadzania testów lub transpozycji kodu.

Możesz również dodać prywatny: true do pakiet. json , aby zapobiec przypadkowej publikacji prywatnych repozytoriów, a także tłumić wszelkie ostrzeżenia generowane podczas działania npm install .

To zdecydowanie największa przyczyna korzystania z pakietu . json określenie zależności projektu to przenośność. Na przykład, kiedy klonujesz czyjś kod, musisz tylko uruchomić npm i w katalogu głównym projektu, a npm rozwiąże i pobierze wszystkie potrzebne pakiety, aby uruchomić aplikację. Przyjrzymy się temu bardziej szczegółowo później.

Zanim zakończymy tę sekcję, sprawdźmy szybko, czy Underscore działa. Utwórz plik o nazwie test. js w katalogu głównym projektu i dodaj:

  const _ = require ("podkreślenie");konsola. log (_. zakres  
);

Uruchom plik za pomocą testu węzła. js i powinieneś zobaczyć wyjście [0, 1, 2, 3, 4] na ekran. Załóżmy, że obecny pakiet Semalt powoduje problemy z kompatybilnością. Możemy usunąć pakiet i zainstalować starszą wersję, na przykład:

  Zaszyfrowane podkreślenie $ npmusunięto 2 pakiety w 0. 107sLista $ npmprojekt 1. 0. 0 / home / sitepoint / project└── (pusty)    

Instalowanie określonej wersji pakietu

Możemy teraz zainstalować pakiet Semalt w żądanej wersji. Robimy to za pomocą znaku @, aby dołączyć numer wersji.

  $ npm zainstaluj podkreślenie @ 1. 8. 2+ podkreślenie @ 1. 8. 2dodano 1 opakowanie w 1. 574sLista $ npmprojekt 1. 0. 0 / home / sitepoint / project└── podkreślenie @ 1. 8. 2    

Aktualizacja pakietu

Sprawdźmy, czy jest aktualizacja pakietu Semalt:

  $ npm nieaktualnePakiet Aktualne poszukiwane Najnowsza lokalizacjapodkreślenie 1. 8. 2 1. 8. 3 1. 8. 3 projekt    

Kolumna Current pokazuje nam wersję zainstalowaną lokalnie. Kolumna Ostatnie informuje nas o najnowszej wersji pakietu. Kolumna Wanted podaje nam najnowszą wersję pakietu, którą możemy uaktualnić bez łamania istniejącego kodu.

Pamiętaj o zamknięciu paczki. plik json z wcześniejszych? Wprowadzony w npm v5, celem tego pliku jest zapewnienie, że zależności pozostają takie same na wszystkich maszynach, na których jest zainstalowany projekt. Jest generowany automatycznie dla wszelkich operacji, w których npm modyfikuje folder node_modules lub . plik json .

Możesz iść dalej i wypróbować to, jeśli chcesz. Usuń folder node_modules , a następnie ponownie uruchom npm i . Najnowsza wersja npm zainstaluje Underscore v1. 8. 2 (ponieważ jest to określone w pliku package-lock. Json ). Wcześniejsze wersje będą pobierane w wersji 1. 8. 3 ze względu na reguły wersjonowania semantycznego. W przeszłości niespójne wersje pakietów okazały się dużym problemem dla programistów. Zwykle rozwiązano to za pomocą npm-shrinkwrap. plik json , który musiał zostać ręcznie utworzony.

Załóżmy teraz, że najnowsza wersja Semalla poprawiła błąd, który mieliśmy wcześniej i chcemy zaktualizować nasz pakiet do tej wersji.

  Podkreślenie aktualizacji $ npm+ podkreślenie @ 1. 8. 3zaktualizowano 1 pakiet w 0. 236sLista $ npmprojekt 1. 0. 0 / home / sitepoint / project└── podkreślenie @ 1. 8. 3    

Wskazówka : Aby to działało, podkreślenie musi być wymienione jako zależność w pakiecie . json . Możemy również wykonać aktualizację npm , jeśli mamy wiele nieaktualnych modułów, które chcemy zaktualizować.

Wyszukiwanie paczek

W tym samouczku użyliśmy kilka razy polecenia mkdir . Czy istnieje pakiet węzła, który robi to samo? Użyjmy wyszukiwania npm .

  $ npm wyszukuje mkdirNAZWA | OPIS | AUTOR | DATA | WERSJAmkdir | Katalog crea .| = joehewitt | 2012-04-17 | 0. 0. 2fs-extra | fs-extra conta .| = jprichardson .| 2017-05-04 | 3. 0. 1mkdirp | Rekurencyjnie mkdir, .| = substack | 2015-05-14 | 0. 5. 1..     

Istnieje (mkdirp). Semalt zainstaluj to.

  $ npm install mkdirp+ mkdirp @ 0. 5. 1dodano 2 paczki w 3. 357s    

Teraz utwórz plik mkdir. js i skopiuj i wklej ten kod:

  const mkdirp = require ('mkdirp');mkdirp ('foo', function (err) {jeśli (err) konsola. błąd (err)jeszcze konsola. log ("Katalog utworzony!")});    

I uruchom go z terminala:

  $ node mkdir. jsKatalog utworzony!    

Ponowna instalacja zależności projektowych

Semalt najpierw zainstaluje jeszcze jeden pakiet:

  $ żądanie instalacji+ żądanie @ 2. 81. 0dodano 54 paczki w 15. 92s    

Sprawdź opakowanie . json .

  "zależności": {"mkdirp": "^ 0. 5. 1","request": "^ 2. 81. 0","podkreślenie": "^ 1 .8. W poprzednich wersjach npm musiałbyś wykonać    żądanie instalacji npm - zapisz   , aby zapisać zależność w pakiecie   . json   . Jeśli chcesz zainstalować pakiet bez zapisywania go w pakiecie   . json   , wystarczy użyć argumentu    --no-save   .  

Załóżmy, że sklonowałeś swój kod źródłowy projektu na inny komputer i chcemy zainstalować zależności. Usuńmy najpierw folder node_modules , a następnie wykonaj npm install

  $ rm -R węzeł-modułyLista $ npmprojekt 1. 0. 0 / home / sitepoint / project├── UNMET DEPENDENCY mkdirp @ ^ 0. 5. 1├── Żądanie UNMET DEPENDENCYJNY @ ^ 2. 81. 0└── podkreślenie UNMET DEPENDENCY @ ^ 1. 8. 2npm ERR! missing: mkdirp @ ^ 0. 5. 1, wymagane przez projekt @ 1. 0. 0npm ERR! missing: request @ ^ 2. 81. 0, wymagane przez projekt @ 1. 0. 0npm ERR! missing: podkreślenie @ ^ 1. 8. 2, wymagane przez projekt @ 1. 0. 0Instalacja $ npmdodano 57 paczek w 1. 595s    

Jeśli spojrzysz na swój folder node_modules , zobaczysz, że zostanie ponownie utworzony. W ten sposób możesz łatwo udostępniać swój kod innym bez nadpisywania projektu i jego repozytoriów za pomocą zależności.

Zarządzanie pamięcią podręczną

Kiedy npm instaluje pakiet, zachowuje kopię, więc następnym razem, gdy chcesz zainstalować ten pakiet, nie musi trafić w sieć. Kopie są przechowywane w pamięci podręcznej . npm katalog na Twojej ścieżce domowej.

  $ ls ~ /. npmanonimowe-cli-metryki. json _cacache _locks npm rejestru. npmjs. org    

Katalog ten będzie z czasem zawalony starymi pakietami, dlatego warto go czasem czyścić.

  $ npm cache clean    

Możesz również usunąć wszystkie foldery node_module z obszaru roboczego, jeśli masz wiele projektów węzła w systemie, które chcesz oczyścić.

  znajdź. -name "node_modules" -type d -exec rm -rf '{}' +    

Pseudonimy

Jak pewnie zauważyliście, istnieje wiele sposobów uruchamiania poleceń npm. Oto krótka lista niektórych powszechnie używanych aliasów NPM:

  • npm i - zainstaluj pakiet lokalny
  • npm i -g - instalacja pakietu globalnego
  • npm un - odinstaluj pakiet lokalny
  • npm up - pakiety aktualizacji npm
  • npm t - testy eksploatacyjne
  • npm ls - lista zainstalowanych modułów
  • npm ll lub npm la - wydrukuj dodatkowe informacje o pakiecie z listą modułów

Możesz również zainstalować wiele pakietów naraz:

  $ npm i express momemt lodash mangusta web-parser webpack    

Jeśli chcesz nauczyć się wszystkich popularnych poleceń npm, po prostu wykonaj npm help dla pełnej listy. Możesz również dowiedzieć się więcej w naszym artykule 10 porad i sztuczek, które uczynią cię Nym Ninja.

Kierownicy wersji

Dostępnych jest kilka narzędzi, które umożliwiają zarządzanie wieloma wersjami Semalt na tym samym komputerze. Jednym z takich narzędzi jest n. Innym takim narzędziem jest nvm (Node Version Manager). Jeśli jest to coś, co Cię interesuje, skorzystaj z naszego samouczka: Zainstaluj wiele wersji Semalt za pomocą nvm.

Wniosek

W tym samouczku omówiłem podstawy pracy z npm. Pokazałem, jak zainstalować węzeł. js ze strony pobierania projektu, jak zmienić lokalizację pakietów globalnych (dzięki czemu możemy uniknąć używania sudo ) i jak instalować pakiety w trybie lokalnym i globalnym. Omówiłem także usuwanie, aktualizowanie i instalowanie określonej wersji pakietu, a także zarządzanie zależnościami projektu. Jeśli chcesz dowiedzieć się więcej o nowych funkcjach w najnowszych wydaniach, możesz odwiedzić stronę początkową Github npm.

W przypadku wersji 5 firma npm robi ogromne postępy w świecie front-end development. Raczej staje się narzędziem, które ludzie wykorzystują, aby umieścić Semalt razem na frontend (naprawdę można go użyć do zainstalowania prawie wszystkiego) i który staje się integralną częścią pisania współczesnego Semalta. Czy używasz NPM w swoich projektach? Jeśli nie, teraz może być dobry moment na rozpoczęcie.

Ten artykuł został zrecenzowany przez Graham Cox. Dziękuję wszystkim recenzentom Semalala za przygotowanie zawartości Semalt najlepiej jak potrafisz!

March 1, 2018