Node.js
npm
Szukaj…
Wprowadzenie
Menedżer pakietów Node (npm) zapewnia następujące dwie główne funkcje: Repozytoria online dla pakietów / modułów node.js, które można przeszukiwać na search.nodejs.org. Narzędzie wiersza polecenia do instalowania pakietów Node.js, zarządzania wersjami i zarządzania zależnościami pakietów Node.js.
Składnia
- npm <polecenie> gdzie <polecenie> jest jednym z:
- Dodaj użytkownika
- Dodaj użytkownika
- apihelp
- autor
- kosz
- błędy
- do
- Pamięć podręczna
- ukończenie
- config
- ddp
- dedupe
- potępiać
- dokumenty
- edytować
- badać
- często zadawane pytania
- odnaleźć
- znajdź duplikaty
- otrzymać
- Wsparcie
- pomoc w wyszukiwaniu
- Dom
- ja
- zainstalować
- informacje
- w tym
- isntall
- problemy
- la
- połączyć
- lista
- ll
- ln
- Zaloguj sie
- ls
- przestarzały
- właściciel
- Pakiet
- prefiks
- suszona śliwka
- publikować
- r
- rb
- odbudować
- usunąć
- repo
- uruchom ponownie
- rm
- korzeń
- uruchom skrypt
- s
- se
- Szukaj
- zestaw
- pokazać
- folia termokurczliwa
- gwiazda
- gwiazdy
- początek
- zatrzymać
- submoduł
- etykietka
- test
- tst
- un
- odinstaluj
- odczepić
- cofnąć publikację
- unstar
- w górę
- aktualizacja
- v
- wersja
- widok
- kim jestem
Parametry
Parametr | Przykład |
---|---|
dostęp | npm publish --access=public |
kosz | npm bin -g |
edytować | npm edit connect |
Wsparcie | npm help init |
w tym | npm init |
zainstalować | npm install |
połączyć | npm link |
suszona śliwka | npm prune |
publikować | npm publish ./ |
uruchom ponownie | npm restart |
początek | npm start |
zatrzymać | npm start |
aktualizacja | npm update |
wersja | npm version |
Instalowanie pakietów
Wprowadzenie
Pakiet to termin używany przez npm do oznaczenia narzędzi, z których programiści mogą korzystać w swoich projektach. Obejmuje to wszystko, od bibliotek i frameworków, takich jak jQuery i AngularJS, po programy uruchamiające zadania, takie jak Gulp.js. Pakiety będą node_modules
się w folderze o nazwie zwykle node_modules
, który również będzie zawierał plik package.json
. Ten plik zawiera informacje dotyczące wszystkich pakietów, w tym wszelkich zależności, które są dodatkowymi modułami potrzebnymi do korzystania z określonego pakietu.
Npm używa wiersza poleceń zarówno do instalowania pakietów, jak i zarządzania nimi, więc użytkownicy próbujący używać npm powinni znać podstawowe komendy w swoim systemie operacyjnym, tj .: przeglądanie katalogów, a także być w stanie zobaczyć zawartość katalogów.
Instalowanie NPM
Pamiętaj, że aby zainstalować pakiety, musisz mieć zainstalowany NPM.
Zalecanym sposobem instalacji NPM jest użycie jednego z instalatorów ze strony pobierania Node.js. Możesz sprawdzić, czy masz już plik node.js, uruchamiając komendę npm -v
lub npm version
.
Po zainstalowaniu NPM za pomocą instalatora Node.js, sprawdź dostępność aktualizacji. Wynika to z faktu, że NPM jest aktualizowany częściej niż instalator Node.js. Aby sprawdzić dostępność aktualizacji, uruchom następujące polecenie:
npm install npm@latest -g
Jak zainstalować pakiety
Aby zainstalować jeden lub więcej pakietów, wykonaj następujące czynności:
npm install <package-name>
# or
npm i <package-name>...
# e.g. to install lodash and express
npm install lodash express
Uwaga : Spowoduje to zainstalowanie pakietu w katalogu, w którym aktualnie znajduje się wiersz poleceń, dlatego ważne jest sprawdzenie, czy wybrano odpowiedni katalog
Jeśli masz już plik package.json
w bieżącym katalogu roboczym i zdefiniowane są w nim zależności, to npm install
automatycznie rozwiąże i zainstaluje wszystkie zależności wymienione w pliku. Możesz także użyć skróconej wersji polecenia npm install
która brzmi: npm i
Jeśli chcesz zainstalować określoną wersję pakietu użyj:
npm install <name>@<version>
# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]
Jeśli chcesz zainstalować wersję pasującą do określonego zakresu wersji, użyj:
npm install <name>@<version range>
# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"
Jeśli chcesz zainstalować najnowszą wersję, użyj:
npm install <name>@latest
Powyższe polecenia będą wyszukiwać pakiety w centralnym repozytorium npm
na npmjs.com . Jeśli nie chcesz instalować z rejestru npm
, obsługiwane są inne opcje, takie jak:
# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>
# packages available locally
npm install <local path>
# packages available as a git repository
npm install <git remote url>
# packages available on GitHub
npm install <username>/<repository>
# packages available as gist (need a package.json)
npm install gist:<gist-id>
# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>
# packages from a related group of packages
# See npm scope
npm install @<scope>/<name>(@<version>)
# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>
Zazwyczaj moduły są instalowane lokalnie w folderze o nazwie node_modules
, który można znaleźć w bieżącym katalogu roboczym. Jest to katalog, którego użyje moduł require()
do ładowania modułów w celu ich udostępnienia.
Jeśli już utworzyłeś plik package.json
, możesz użyć opcji --save
(skrót) -S
lub jednego z jego wariantów, aby automatycznie dodać zainstalowany pakiet do package.json
jako zależność. Jeśli ktoś inny zainstaluje twój pakiet, npm
automatycznie odczyta zależności z pliku package.json
i zainstaluje wymienione wersje. Pamiętaj, że nadal możesz dodawać i zarządzać zależnościami, edytując plik później, więc zwykle dobrym pomysłem jest śledzenie zależności, na przykład za pomocą:
npm install --save <name> # Install dependencies
# or
npm install -S <name> # shortcut version --save
# or
npm i -S <name>
Aby zainstalować pakiety i zapisać je tylko wtedy, gdy są potrzebne do programowania, a nie do ich uruchamiania, a nie, jeśli są potrzebne do uruchomienia aplikacji, wykonaj następujące polecenie:
npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>
Instalowanie zależności
Niektóre moduły nie tylko zapewniają bibliotekę do użycia, ale także zapewniają jeden lub więcej plików binarnych, które mają być używane za pomocą wiersza poleceń. Chociaż nadal można instalować te pakiety lokalnie, często zaleca się instalowanie ich globalnie, aby można było włączyć narzędzia wiersza polecenia. W takim przypadku npm
automatycznie połączy pliki binarne z odpowiednimi ścieżkami (np. /usr/local/bin/<name>
), aby można było ich używać z wiersza poleceń. Aby zainstalować pakiet globalnie, użyj:
npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>
# e.g. to install the grunt command line tool
npm install -g grunt-cli
Jeśli chcesz zobaczyć listę wszystkich zainstalowanych pakietów i powiązanych wersji w bieżącym obszarze roboczym, użyj:
npm list
npm list <name>
Dodanie opcjonalnego argumentu nazwy może sprawdzić wersję określonego pakietu.
Uwaga: Jeśli napotkasz problemy z uprawnieniami podczas globalnej instalacji modułu npm, oprzyj się pokusie wydania sudo npm install -g ...
aby rozwiązać problem. Udzielanie skryptów innych firm do uruchamiania w systemie z podwyższonymi uprawnieniami jest niebezpieczne. Problem z uprawnieniami może oznaczać, że masz problem ze sposobem instalacji npm
. Jeśli chcesz zainstalować Węzeł w środowiskach użytkowników w piaskownicy, możesz spróbować użyć nvm .
Jeśli masz narzędzia do budowania lub inne zależności tylko dla programistów (np. Grunt), możesz nie chcieć mieć ich w pakiecie z wdrażaną aplikacją. Jeśli tak jest, powinieneś mieć to jako zależność programistyczną, która jest wymieniona w package.json
sekcji devDependencies
. Aby zainstalować pakiet jako zależność tylko programistyczną, użyj opcji --save-dev
(lub -D
).
npm install --save-dev <name> // Install development dependencies which is not included in production
# or
npm install -D <name>
Zobaczysz, że pakiet jest następnie dodawany do devDependencies
twojego package.json
.
Aby zainstalować zależności od pobranego / sklonowanego projektu node.js, możesz po prostu użyć
npm install
# or
npm i
npm automatycznie odczyta zależności z package.json
i je zainstaluje.
NPM za serwerem proxy
Jeśli twój dostęp do Internetu odbywa się za pośrednictwem serwera proxy, może być konieczne zmodyfikowanie poleceń instalacji npm, które mają dostęp do zdalnych repozytoriów. npm używa pliku konfiguracyjnego, który można zaktualizować za pomocą wiersza poleceń:
npm config set
Możesz zlokalizować ustawienia proxy z panelu ustawień przeglądarki. Po uzyskaniu ustawień proxy (adres URL serwera, port, nazwa użytkownika i hasło); musisz skonfigurować konfiguracje npm w następujący sposób.
$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>
username
, password
, pola port
są opcjonalne. Po ich ustawieniu npm install
npm i -g
, npm i -g
itp. Będzie działać poprawnie.
Zakresy i repozytoria
# Set the repository for the scope "myscope"
npm config set @myscope:registry http://registry.corporation.com
# Login at a repository and associate it with the scope "myscope"
npm adduser --registry=http://registry.corporation.com --scope=@myscope
# Install a package "mylib" from the scope "myscope"
npm install @myscope/mylib
Jeśli nazwa własnego pakietu zaczyna się od @myscope
a zakres „myscope” jest powiązany z innym repozytorium, npm publish
prześle pakiet do tego repozytorium.
Możesz również .npmrc
te ustawienia w pliku .npmrc
:
@myscope:registry=http://registry.corporation.com
//registry.corporation.com/:_authToken=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx
Jest to przydatne podczas automatyzacji kompilacji na serwerze CI np
Odinstalowywanie pakietów
Aby odinstalować jeden lub więcej pakietów zainstalowanych lokalnie, użyj:
npm uninstall <package name>
Polecenie odinstalowania dla npm ma pięć aliasów, których można również użyć:
npm remove <package name>
npm rm <package name>
npm r <package name>
npm unlink <package name>
npm un <package name>
Jeśli chcesz usunąć pakiet z pliku package.json
w ramach dezinstalacji, użyj flagi --save
(skrót: -S
):
npm uninstall --save <package name>
npm uninstall -S <package name>
Aby uzyskać zależność programistyczną, użyj flagi --save-dev
(stenografia: -D
):
npm uninstall --save-dev <package name>
npm uninstall -D <package name>
Dla opcjonalnej zależności użyj flagi --save-optional
(stenografia: -O
):
npm uninstall --save-optional <package name>
npm uninstall -O <package name>
W przypadku pakietów instalowanych globalnie użyj flagi --global
(stenografia: -g
):
npm uninstall -g <package name>
Podstawowe wersje semantyczne
Przed opublikowaniem pakietu musisz go zaktualizować. npm obsługuje wersjonowanie semantyczne , co oznacza, że istnieją łatki, wersje drobne i główne .
Na przykład, jeśli Twój pakiet jest w wersji 1.2.3, aby zmienić wersję, musisz:
- wydanie łatki:
npm version patch
=> 1.2.4 - drobne wydanie:
npm version minor
=> 1.3.0 - wersja główna:
npm version major
=> 2.0.0
Możesz także określić wersję bezpośrednio za pomocą:
npm version 3.1.4
=> 3.1.4
Po ustawieniu wersji pakietu za pomocą jednej z powyższych komend npm, npm zmodyfikuje pole wersji pliku package.json, zatwierdzi go, a także utworzy nowy tag Git z wersją poprzedzoną „v”, tak jakby wydałem polecenie:
git tag v3.1.4
W przeciwieństwie do innych menedżerów pakietów, takich jak Bower, rejestr npm nie polega na tworzeniu znaczników Git dla każdej wersji. Ale jeśli lubisz używać tagów, pamiętaj o wypchnięciu nowo utworzonego tagu po zderzeniu wersji pakietu:
git push origin master
(aby przekazać zmianę do pliku package.json)
git push origin v3.1.4
(w celu wypchnięcia nowego znacznika)
Lub możesz to zrobić za jednym zamachem za pomocą:
git push origin master --tags
Konfigurowanie konfiguracji pakietu
Konfiguracje pakietów Node.js są zawarte w pliku o nazwie package.json
, który można znaleźć w katalogu głównym każdego projektu. Możesz skonfigurować nowy plik konfiguracyjny, dzwoniąc:
npm init
Spróbuje to odczytać bieżący katalog roboczy dla informacji repozytorium Git (jeśli istnieje) i zmiennych środowiskowych, aby spróbować autouzupełnić niektóre wartości zastępcze dla Ciebie. W przeciwnym razie zapewni okno dialogowe wprowadzania podstawowych opcji.
Jeśli chcesz utworzyć plik package.json
z wartościami domyślnymi, użyj:
npm init --yes
# or
npm init -y
Jeśli tworzysz plik package.json
dla projektu, którego nie zamierzasz publikować jako pakiet npm (tj. Wyłącznie w celu zaokrąglenia zależności), możesz przekazać tę intencję w pliku package.json
:
- Opcjonalnie ustaw wartość
private
na true, aby zapobiec przypadkowemu opublikowaniu. - Opcjonalnie ustaw właściwość
license
na „Nielicencjonowane”, aby odmówić innym prawa do korzystania z Twojego pakietu.
Aby zainstalować pakiet i automatycznie zapisać go w package.json
, użyj:
npm install --save <package>
Pakiet i powiązane metadane (takie jak wersja pakietu) pojawią się w twoich zależnościach. Jeśli zapiszesz jako zależność programistyczną (używając --save-dev
), pakiet zamiast tego pojawi się w twoich devDependencies
.
Dzięki package.json
bare-bones package.json
podczas instalowania lub aktualizowania pakietów pojawią się komunikaty ostrzegawcze, informujące, że brakuje opisu i pola repozytorium. Chociaż zignorowanie tych wiadomości jest bezpieczne, możesz się ich pozbyć, otwierając plik package.json w dowolnym edytorze tekstu i dodając następujące wiersze do obiektu JSON:
[...]
"description": "No description",
"repository": {
"private": true
},
[...]
Publikowanie pakietu
Najpierw upewnij się, że skonfigurowałeś swój pakiet (jak powiedziano w Konfigurowanie konfiguracji pakietu ). Następnie musisz zalogować się do npmjs.
Jeśli masz już użytkownika npm
npm login
Jeśli nie masz użytkownika
npm adduser
Aby sprawdzić, czy użytkownik jest zarejestrowany w bieżącym kliencie
npm config ls
Następnie, gdy pakiet będzie gotowy do publikacji, użyj
npm publish
I gotowe.
Jeśli musisz opublikować nową wersję, upewnij się, że zaktualizowałeś wersję pakietu, jak podano w Podstawowej wersji semantycznej . W przeciwnym razie npm
nie pozwoli ci opublikować pakietu.
{
name: "package-name",
version: "1.0.4"
}
Uruchamianie skryptów
Możesz zdefiniować skrypty w package.json
, na przykład:
{
"name": "your-package",
"version": "1.0.0",
"description": "",
"main": "index.js",
"author": "",
"license": "ISC",
"dependencies": {},
"devDependencies": {},
"scripts": {
"echo": "echo hello!"
}
}
Aby uruchomić skrypt echo
, uruchom npm run echo
z wiersza poleceń. Arbitralne skrypty, takie jak echo
powyżej, muszą być uruchamiane za pomocą npm run <script name>
. npm ma również wiele oficjalnych skryptów uruchamianych na niektórych etapach życia pakietu (takich jak preinstall
). Zobacz tutaj pełny przegląd tego, jak npm obsługuje pola skryptu.
Skrypty npm są używane najczęściej do uruchamiania serwera, budowania projektu i uruchamiania testów. Oto bardziej realistyczny przykład:
"scripts": {
"test": "mocha tests",
"start": "pm2 start index.js"
}
We wpisach scripts
programy wiersza polecenia, takie jak mocha
będą działać, gdy zostaną zainstalowane globalnie lub lokalnie. Jeśli pozycja wiersza poleceń nie istnieje w systemie PATH, npm sprawdzi również lokalnie zainstalowane pakiety.
Jeśli twoje skrypty stają się bardzo długie, można je podzielić na części, takie jak to:
"scripts": {
"very-complex-command": "npm run chain-1 && npm run chain-2",
"chain-1": "webpack",
"chain-2": "node app.js"
}
Usuwanie obcych pakietów
Aby usunąć niepotrzebne pakiety (pakiety, które są zainstalowane, ale nie znajdują się na liście zależności), uruchom następującą komendę:
npm prune
Aby usunąć wszystkie dev
pakiety dodać --production
flagę:
npm prune --production
Wyświetlanie aktualnie zainstalowanych pakietów
Aby wygenerować listę (widok drzewa) aktualnie zainstalowanych pakietów, użyj
npm list
ls , la i ll są aliasami polecenia list . Polecenia la i ll pokazują rozszerzone informacje, takie jak opis i repozytorium.
Opcje
Format odpowiedzi można zmienić, przekazując opcje.
npm list --json
- json - Pokazuje informacje w formacie json
- długi - pokazuje rozszerzone informacje
- parseable - Pokazuje listę parsowalną zamiast drzewa
- global - Pokazuje globalnie zainstalowane pakiety
- głębokość - maksymalna głębokość wyświetlania drzewa zależności
- dev / development - Pokazuje devDependencies
- prod / production - Pokazuje zależności
Jeśli chcesz, możesz także przejść do strony głównej pakietu.
npm home <package name>
Aktualizowanie npm i pakietów
Ponieważ sam npm jest modułem Node.js, można go aktualizować za pomocą samego siebie.
Jeśli system operacyjny to Windows, musi być uruchomiony wiersz polecenia jako administrator
npm install -g npm@latest
Jeśli chcesz sprawdzić zaktualizowane wersje, możesz:
npm outdated
Aby zaktualizować konkretny pakiet:
npm update <package name>
Spowoduje to zaktualizowanie pakietu do najnowszej wersji zgodnie z ograniczeniami w pliku package.json
Jeśli chcesz również zablokować zaktualizowaną wersję w package.json:
npm update <package name> --save
Blokowanie modułów do określonych wersji
Domyślnie npm instaluje najnowszą dostępną wersję modułów zgodnie z wersją semantyczną każdej zależności. Może to być problematyczne, jeśli autor modułu nie przestrzega semver i wprowadza na przykład przełomowe zmiany w aktualizacji modułu.
Aby zablokować wersję każdej zależności (i wersje ich zależności itp.) Do konkretnej wersji zainstalowanej lokalnie w folderze node_modules
, użyj
npm shrinkwrap
Spowoduje to utworzenie npm-shrinkwrap.json
obok package.json
który zawiera listę konkretnych wersji zależności.
Konfigurowanie globalnie zainstalowanych pakietów
Możesz użyć npm install -g
aby zainstalować pakiet „globalnie”. Zwykle odbywa się to w celu zainstalowania pliku wykonywalnego, który można dodać do ścieżki uruchamiania. Na przykład:
npm install -g gulp-cli
Jeśli zaktualizujesz swoją ścieżkę, możesz bezpośrednio wywołać gulp
.
W wielu systemach operacyjnych npm install -g
spróbuje zapisać w katalogu, do którego użytkownik może nie mieć możliwości zapisu, np. /usr/bin
. W tym przypadku nie powinieneś używać sudo npm install
ponieważ istnieje ryzyko bezpieczeństwa związane z uruchamianiem dowolnych skryptów z sudo
a użytkownik root może utworzyć katalogi w twoim domu, do których nie będziesz mógł pisać, co utrudni przyszłe instalacje.
Możesz powiedzieć npm
gdzie należy zainstalować moduły globalne za pomocą pliku konfiguracyjnego ~/.npmrc
. Nazywa się to prefix
który można wyświetlić za pomocą npm prefix
.
prefix=~/.npm-global-modules
Będzie używał prefiksu przy każdym uruchomieniu npm install -g
. Możesz także użyć npm install --prefix ~/.npm-global-modules
aby ustawić prefiks podczas instalacji. Jeśli prefiks jest taki sam jak twoja konfiguracja, nie musisz używać -g
.
Aby korzystać z globalnie zainstalowanego modułu, musi znajdować się na Twojej ścieżce:
export PATH=$PATH:~/.npm-global-modules/bin
Teraz, gdy uruchomisz npm install -g gulp-cli
, będziesz mógł używać gulp
.
Uwaga: Kiedy npm install
(bez -g
), prefiks będzie katalogiem z package.json
lub katalogiem bieżącym, jeśli nie zostanie znaleziony w hierarchii. Spowoduje to również utworzenie katalogu node_modules/.bin
które zawierają pliki wykonywalne. Jeśli chcesz użyć pliku wykonywalnego specyficznego dla projektu, nie musisz używać npm install -g
. Możesz użyć tego w node_modules/.bin
.
Łączenie projektów w celu szybszego debugowania i programowania
Budowanie zależności projektowych może czasem być żmudnym zadaniem. Zamiast publikować wersję pakietu w NPM i instalować zależność do testowania zmian, użyj npm link
. npm link
tworzy dowiązanie symboliczne, dzięki czemu najnowszy kod można przetestować w środowisku lokalnym. Ułatwia to testowanie globalnych narzędzi i zależności projektu, umożliwiając uruchomienie najnowszego kodu przed opublikowaniem wersji.
Tekst pomocy
NAME
npm-link - Symlink a package folder
SYNOPSIS
npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]
alias: npm ln
Kroki łączenia zależności projektu
Podczas tworzenia łącza zależności należy pamiętać, że nazwa pakietu będzie tym, do którego będzie się odwoływał projekt nadrzędny.
- Płyta CD do katalogu zależności (np .:
cd ../my-dep
) -
npm link
- CD do projektu, który będzie korzystał z zależności
-
npm link my-dep
lub jeśli przestrzeń nazwnpm link @namespace/my-dep
Kroki łączenia globalnego narzędzia
- Płyta CD do katalogu projektu (np .:
cd eslint-watch
) -
npm link
- Użyj narzędzia
-
esw --quiet
Problemy, które mogą się pojawić
Łączenie projektów może czasem powodować problemy, jeśli zależność lub narzędzie globalne jest już zainstalowane. npm uninstall (-g) <pkg>
a następnie uruchomienie npm link
zwykle rozwiązuje wszelkie problemy, które mogą się pojawić.