Różnica między NPM i NVM

83

Wiem, że npm to menedżer pakietów, a nvm to menedżer wersji węzła. Obecnie próbuję automatycznie zainstalować moje środowisko programistyczne i produkcyjne za pomocą Bash i zapomniałem, od czego zacząłem iw jakiej kolejności. Po zainstalowaniu npm stwierdziłem, że nasz nvm nie został zainstalowany.

Czy nadal muszę instalować nvm? Jeśli tak, jakie są z tego korzyści?

JohnTheBeloved
źródło
5
nvm instaluje Node, który instaluje npm. Jeśli nie potrzebujesz / nie chcesz przełączać się między wersjami Node, prawdopodobnie nie potrzebujesz nvm.
Felix Kling

Odpowiedzi:

98

nvm(Node Version Manager) to narzędzie umożliwiające pobieranie i instalowanie Node.js. Sprawdź, czy masz go zainstalowanego przez nvm --version.

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.26.1/install.sh | bash

npm(Node Package Manager) to narzędzie umożliwiające instalację pakietów javascript. Sprawdź, czy masz go zainstalowanego przez npm --version.

npmjest dostarczany z Node.js, więc jeśli masz zainstalowaną aplikację node ( node --version), najprawdopodobniej również ją npmzainstalowałeś.

Nie potrzebujesz, nvmchyba że chcesz zachować wiele wersji Node.js zainstalowanych w swoim systemie lub jeśli chcesz zaktualizować swoją obecną wersję.

ThomasReggi
źródło
1
co oznacza, że ​​mogę używać nvm install watchmanzamiast, npm install watchmanponieważ nie chcę zmieniać wersji npm
AVI
@JokerFan To nie do końca prawda. Nie możesz biec nvm install watchman. Gdy zmienisz swoją wersję nodewraz nvmz wersją npmzmian.
ThomasReggi
2
Czy ma sens posiadanie wielu wersji Node.js w systemie?
Ajay S
2
@AjayS Możesz pracować nad dwoma oddzielnymi projektami, które mają bardzo specyficzne wymagania dotyczące wersji węzła, bardzo typowe dla wykonawców.
Juan Mendes
23

nvm jak powiedziałeś jest "aktywnym" menedżerem wersji nodejs. Możesz mieć wiele wersji węzła na tej samej maszynie i przełączać się, wykonując „nvm use version”. npm szanuje nvm, jeśli jest obecny na komputerze, co oznacza, że ​​jeśli masz aktywny 0.12.7 i wykonujesz npm install -g uuid, zainstaluje go globalnie pod 0.12.7, ale jeśli przełączysz się na 4.0.0, uuid nie będzie już dostępne na całym świecie.

W każdym razie do zainstalowania pakietów niekoniecznie potrzebujesz nvm.

masimplo
źródło
która wersja jest domyślnie dostarczana z NVM?
JohnTheBeloved
@JohnTheBeloved: None. nvm domyślnie wskazuje wersję twojego systemu operacyjnego.
Felix Kling
1
@FelixKling ma rację. Możesz użyć „nvm ls”, aby zobaczyć wersje używane przez nvm, a także „node -v”, aby zobaczyć aktualnie aktywny węzeł.
masimplo