NPM和NVM的区别

140

我知道npm是包管理器,nvm是Node.js版本管理器。目前,我正在尝试使用Bash自动安装我的开发和生产环境,但忘记了起点和顺序。在安装了npm后,我发现我们没有安装nvm。

那么我还需要安装nvm吗?如果需要,有什么好处呢?


10
安装nvm会安装Node,而Node会安装npm。如果您不需要或不想在不同的Node版本之间切换,则可能不需要使用nvm。 - Felix Kling
3个回答

158

nvm(Node Version Manager)是一种工具,可以让你下载和安装 Node.js。通过 nvm --version 检查是否已安装。

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

npm 是 Node.js 的包管理工具,可以用它安装 JavaScript 包。通过 npm --version 命令检查是否已经安装。

npm 与 Node.js 一同安装,所以如果你已经安装了 Node.js(node --version),那么很可能也已经安装了 npm

如果你想在系统上安装多个 Node.js 版本或者升级版本,才需要使用 nvm 工具。


1
这意味着我可以使用 nvm install watchman 而不是 npm install watchman,因为我不想改变 npm 版本。 - AVI
@JokerFan 这并不完全正确。你不能运行 nvm install watchman。当你使用 nvm 更改 node 版本时,npm 的版本也会随之更改。 - ThomasReggi
3
在系统上拥有多个 Node.js 版本是否有意义? - Ajay S
3
@AjayS 你可能会同时参与两个具有非常特定的节点版本要求的单独项目,这在承包商中非常普遍。 - Ruan Mendes

34

nvm是一款“主动式”的nodejs版本管理器。您可以在同一台机器上安装多个node版本,并通过使用“nvm use version”命令进行切换。如果机器中存在nvm,npm会遵循其规则,这意味着如果您的活动版本是0.12.7并执行“npm install -g uuid”命令,它将全局地在0.12.7下安装。但是,如果您切换到4.0.0,则uuid将不再全局可用。

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


nvm默认安装哪个版本? - JohnTheBeloved
@JohnTheBeloved:没有。nvm默认指向您的操作系统版本。 - Felix Kling
1
@FelixKling是正确的。您可以执行“nvm ls”以查看nvm使用的版本,也可以执行“node -v”以查看当前活动的节点。 - masimplo

16

我认为这里可以为所有Python用户提供一个类比。

nvm 管理不同版本的 node。而 node 包含了 npm (包管理器)。

pyenv 管理不同版本的 python。而 python 包含了 pip (包管理器)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接