NPM和NVM之间的区别


82

我知道npm是程序包管理器,而nvm是节点版本管理器。我目前正在尝试使用Bash自动安装开发和生产环境,却忘记了如何开始以及以什么顺序进行。安装npm后,我发现未安装我们的nvm。

我仍然需要安装nvm吗?如果是这样,有什么好处?


4
nvm安装Node,该节点安装npm。如果您不需要/不想在Node版本之间切换,那么您可能不需要nvm。
Felix Kling

Answers:


96

nvm(节点版本管理器)是一个允许您下载和安装Node.js的工具。检查是否通过安装了它nvm --version

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

npm(节点程序包管理器)是一个允许您安装javascript程序包的工具。检查是否通过安装了它npm --version

npmNode.js随附,因此,如果您已安装节点(node --version),则很可能也已npm安装。

nvm除非您要在系统上安装多个版本的Node.js,或者您想要升级当前版本,否则不需要。


1
这意味着我可以使用nvm install watchman而不是npm install watchman因为我不想更改npm版本
AVI

@JokerFan并非完全正确。您无法运行nvm install watchman。当您同时更改版本nodenvm版本时npm
ThomasReggi'2

2
在系统上具有多个版本的Node.js是否有意义?
Ajay S

2
@AjayS您可以从事两个非常具体的节点版本要求的独立项目,这对于承包商来说很常见。
Juan Mendes

23

如您所说,nvm是一个“活动的” nodejs版本管理器。您可以在同一台计算机上具有多个节点版本,并通过执行“ nvm use version”进行切换。npm会在计算机上存在nvm的情况下尊重nvm,这意味着如果您具有0.12.7的活动目录并执行npm install -g uuid,它将在0.12.7以下全局安装它,但是如果切换到4.0.0,则uuid将不再是全球可用。

无论如何,您不一定需要nvm来安装软件包。


默认情况下,nvm随附哪个版本?
JohnTheBeloved

@JohnTheBeloved:没有。默认情况下,nvm指向操作系统的版本。
菲利克斯·克林

1
@FelixKling是正确的。您可以执行“ nvm ls”来查看nvm使用的版本,也可以执行“ node -v”来查看当前活动的节点。
masimplo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.