使用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 onmacOS和Linux.你可以这样做删除之前安装的所有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.14
Patch,你可以通过运行:
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-from=10.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使用节点NVMls
它将显示如下:
你也可以用下面的命令查看当前正在使用的版本:
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)"如果[- n"nvmrc_path美元"];然后当地的nvmrc_node_version=$ (nvm版本"$ (猫"$ {nvmrc_path}")")如果["nvmrc_node_version美元"=“N / A”];然后nvm安装elif["nvmrc_node_version美元"! ="node_version美元"];然后nvm使用fielif["node_version美元"! ="$ (NVM版本默认)"];然后回声“恢复到nvm默认版本”NVM使用默认fi}添加-zsh-hook CHPWD load-nvmrc load-nvmrc
现在,当你用.nvmrc
文件,您的shell将自动更改节点版本。
其他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社区非常感谢您的工作。