使用nvm安装多个版本的Node.js

分享

在使用Node.js时,您可能会遇到需要安装多个运行时版本的情况。

例如,也许您的机器上设置了最新版本的Node,但您即将开始处理的项目需要较旧的版本。或者,您可能正在将一个旧的Node项目升级到一个更现代的版本,在进行转换时能够在两者之间切换会很方便。

如果没有一个好的工具,这将意味着花费大量的时间和精力手动卸载和重新安装Node版本及其全局包。幸运的是,还有更好的办法!

引入nvm

nvm表示节点版本管理器。顾名思义,它可以帮助您轻松地管理和切换不同的Node版本。它提供了一个命令行界面,你可以用一个命令安装不同的版本,设置默认值,在它们之间切换等等。

操作系统支持

nvm同时支持Linux和macOS,但这并不是说Windows用户必须错过。还有第二个项目nvm-windows为Windows用户提供了轻松管理Node环境的选项。尽管有这个名字,nvm-windows不是nvm的克隆,也不是nvm的附属。但是,下面列出的基本命令(用于安装、列出和在版本之间切换)应该适用于nvm和nvm-windows。

安装

让我们首先介绍Windows、macOS和Linux的安装。

窗户

首先,我们需要做一点准备工作:

  • 卸载所有现有版本的Node.js
  • 删除任何现有的Node.js安装目录(例如C:\Program Files\nodejs
  • 删除现有的NPM安装位置(例如C:\Users\ <用户> \ AppData \ \ npm徘徊

在此之后,下载并运行最新的稳定安装程序你应该可以出发了!

macOS / Linux

与Windows不同,在macOS和Linux中删除之前的Node和npm安装是可选的。如果这是你想做的事情,网上有很多很好的资源。例如,下面是如何删除Node onmacOSLinux.你可以这样做删除之前安装的所有NPM你可能有。

您可以使用cURL或Wget安装nvm。在您的终端上运行以下命令:

旋度

旋度- o - https://raw.githubusercontent.com/creationix/nvm/v0.35.2/install.sh|bash

或与Wget

wget问:https://raw.githubusercontent.com/creationix/nvm/v0.35.2/install.sh|bash

请注意,版本号(v0.35.2)会随着项目的发展而改变,所以值得检查项目主页的相关部分找到最新的版本。

这将把nvm存储库克隆到~ / .nvm并将对您的bash配置文件进行所需的更改,以便nvm在终端的任何地方都可用。

就是这样!重新加载(或重新启动)您的终端,nvm就可以使用了。

使用nvm

如果正确安装,可以安装nvm命令在终端的任何地方都可用。让我们看看如何使用它来管理Node.js版本。

安装多个版本的Node.js

nvm最重要的部分之一当然是安装不同版本的Node.js。为此,nvm提供了nvm安装命令。您可以通过运行此命令安装特定的版本。例如:

nvm安装12.14.1

通过在终端中运行上述程序,nvm将安装Node.js版本12.14.1

提示:vvm -windows用户必须运行NVM使用12.14.1在安装。

nvm遵循SemVer,所以如果你想安装,例如,最新的12.14Patch,你可以通过运行:

nvm安装12.14

nvm将安装Node.js版本12.14.X,在那里X是可用的最高版本。写这篇文章的时候,这是1,所以你会得到12.14.1系统上安装的版本。

您可以通过运行以下命令查看可用版本的完整列表:

nvm ls-remote

对于vvm -windows,这是:

nvmls可用

提示:列出所有可用的Node版本会产生大量输出。Linux用户可能喜欢将其qpipe到grep他们想要的版本。例如,NVM ls-remote | less,或NVM ls-remote | grep v12

npm

当安装一个Node.js实例时,nvm也会安装一个兼容的npm的版本。每个Node版本可能会带来不同的npm版本,你可以运行npm - v来检查您当前正在使用的是哪个。全局安装的npm包不会在不同的Node.js版本之间共享,因为这可能会导致不兼容。相反,它们与当前的Node版本一起安装~ / .nvm /版本/节点/ <版本> / lib / node_modules.这有用户不需要的额外优势sudo安装全局包的权限。

幸运的是,当安装一个新的Node.js版本时,你可以从特定的版本重新安装npm全局包。例如:

nvm安装v12.14.1——reinstall-packages-from10.18.1

通过运行上述程序,nvm将安装Node.js版本12.14.1,对应的NPM版本,并重新安装已安装的全局NPM包10.18.1的版本。

如果您不确定最新版本是什么,您可以使用节点别名:

nvm安装节点

这将当前拉入版本13.6.0

或者您可以安装最新的LTS版使用:

nvm安装——lts

这将当前拉入版本12.14.1

你也可以卸载任何实例,你不再认为是有用的,通过运行:

nvm卸载13.6.0

版本切换

到目前为止,我们已经了解了如何安装不同的Node版本。现在让我们来看看如何在它们之间切换。首先要注意的是,当安装新版本时,它会自动投入使用。所以如果你安装了最新的Node.js版本,然后运行节点- v之后,您将看到最新版本的输出。

为了在已安装的版本之间切换,nvm提供了nvm使用命令。这类似于安装命令。因此,您需要在后面加上版本号或别名。

切换到Node.js版本13.6.0

nvm使用13.6.0

切换到Node.js版本12.14.1

nvm使用12.14.1

切换到最新的Node.js版本:

NVM使用节点

切换到最新LTS版本:

NVM使用——lts

当切换到不同的版本时,nvm将使节点实例链接到正确的Node.js实例。

自定义别名

除了nvm自带的别名,还可以创建自定义别名。例如,通过运行:

nvm别名awesome-version13.6.0

你为Node.js version设置了一个别名“awesome-version”13.6.0.所以,如果你现在运行:

NVM使用awesome-version

NVM将切换节点到版本13.6.0.您可以通过以下命令删除别名:

nvmunaliasawesome-version

你也可以在任何shell中设置一个默认实例,通过将一个版本定位为“默认”别名,如下所示:

nvm别名默认的12.14.1

列出已安装实例

任何时候你都可以通过运行以下命令来检查你已经安装了哪些版本:

nvmls

这将显示类似以下内容:

NVM版本列表"loading=

左边有箭头的绿色条目是当前使用的版本。在安装的版本下面,有一个可用别名的列表。现在尝试执行以下命令:

NVM使用节点NVMls

它将显示如下:

NVM使用和版本列表"loading=

你也可以用下面的命令查看当前正在使用的版本:

nvm当前

在每个项目的基础上指定节点版本

版本管理器,例如rbenv允许您在每个项目的基础上指定一个Ruby版本(通过将该版本写入一个.ruby-version文件在当前目录)。这在nvm中是可能的,如果你创建一个.nvmrc文件里面有一个项目并指定了版本号,就可以CD到项目的目录和类型nvm使用.对象的内容.nvmrc文件,并使用指定的任何版本的Node。

如果这对您来说很重要,那么在项目的主页上有几个片段可以添加到您的. bashrc. zshrc文件来实现这一点。

下面是ZSH片段。把它放在你的nvm配置下面:

autolload - u add-zsh-hook load-nvmrc当地的node_version$ (nvm版本当地的nvmrc_path$ (nvm_find_nvmrc如果- nnvmrc_path美元然后当地的nvmrc_node_version$ (nvm版本$ ($ {nvmrc_path}如果nvmrc_node_version美元“N / A”然后nvm安装elifnvmrc_node_version美元! =node_version美元然后nvm使用fielifnode_version美元! =$ (NVM版本默认然后回声“恢复到nvm默认版本”NVM使用默认fi添加-zsh-hook CHPWD load-nvmrc load-nvmrc

现在,当你用.nvmrc文件,您的shell将自动更改节点版本。

自动应用nvm使用"loading=

其他nvm命令

NVM提供了其他一些更高级或不太常用的命令。

对于已安装的版本,可以直接执行命令,无需切换节点变量:

nvm运行13.60——版本

你可以在子shell上运行一个命令,针对特定的版本:

nvm执行13.6.0节点——版本

你可以获取特定安装版本的Node.js可执行文件的路径:

nvm哪一个13.6.0

这在配置文本编辑器插件时可能很有用,该插件需要知道当前版本的Node所在的位置。

结论

nvm对于任何Node.js开发人员来说都是一个很棒的工具。它可以实现无忧的安装和不同版本之间的轻松切换,为真正重要的事情节省时间。

一封感谢信给蒂姆•卡斯韦尔nvm的创建者,以及to科里巴特勒感谢nvm对Windows的支持,当然也感谢那些为这些伟大项目做出贡献的人。Node.js社区非常感谢您的工作。

你呢?你使用nvm吗?你的经历如何?点击迈克尔詹姆斯如果你想聊天就在推特上

Drupal 7中的每个节点有多个编辑器"></a>
         <div class= Drupal 7中的每个节点有多个编辑器 丹尼尔桃花心木
如何在一个服务器上运行多个版本的PHP"></a>
         <div class= 如何在一个服务器上运行多个版本的PHP Thien Tran Duy
stackkedit 4.0:多实例和本地主机"></a>
         <div class= stackkedit 4.0:多实例和本地主机 布鲁诺Skvorc
使用Docker跨Node.js版本测试"></a>
         <div class= 使用Docker跨Node.js版本测试 杆Vagg
Baidu