nvm 安装node.js
使用Node.js时,可能会遇到需要安装多个版本的运行时的情况。
例如,也许您在计算机上设置了最新版本的Node,但是要开始使用的项目需要较旧的版本。 或者,也许您正在将一个旧的Node项目升级到一个更现代的版本,并且在进行过渡时能够在两者之间进行切换很方便。
如果没有良好的工具,这将意味着花费大量时间和精力手动卸载和重新安装Node版本及其全局软件包。 幸运的是,有更好的方法!
nvm代表节点版本管理器。 顾名思义,它可以帮助您轻松管理和在不同的Node版本之间切换。 它提供了一个命令行界面,您可以在其中使用单个命令安装不同的版本,设置默认版本,在它们之间进行切换等等。
nvm支持Linux和macOS,但这并不是说Windows用户必须错过。 还有一个名为nvm-windows的项目,它为Windows用户提供了轻松管理Node环境的选项。 尽管有名称,nvm-windows并不是nvm的克隆,也不隶属于nvm。 但是,下面列出的基本命令(用于安装,列出和在版本之间切换)应该对nvm和nvm-windows都适用。
首先,我们介绍Windows,macOS和Linux的安装。
首先,我们需要做一些准备:
C:\Program Files\nodejs
) C:\Users\\AppData\Roaming\npm
) 之后,下载并运行最新的稳定安装程序 ,您应该一切顺利!
与Windows不同,在macOS和Linux中删除以前的Node和npm安装是可选的。 如果这是您想做的事情,则可以在网上找到很多不错的资源。 例如,以下是在macOS和Linux上删除Node的方法。 这是删除现有npm安装的方法 。
您可以使用cURL或Wget安装nvm。 在您的终端上,运行以下命令:
使用cURL :
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.2/install.sh | bash
或使用Wget :
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.35.2/install.sh | bash
请注意,版本号( v0.35.2
)将随着项目的发展而改变,因此值得检查项目主页的相关部分以找到最新版本。
这会将nvm存储库克隆到~/.nvm
,并将对bash配置文件进行必要的更改,以便可以从终端中的任何位置使用nvm
。
就是这样! 重新加载(或重新启动)您的终端,即可使用nvm。
如果安装正确,则可以在终端的任何位置使用nvm
命令。 让我们看看如何使用它来管理Node.js版本。
nvm最重要的部分之一当然是安装不同版本的Node.js。 为此,nvm提供了nvm install
命令。 您可以通过运行此命令以及所需的版本来安装特定版本。 例如:
nvm install 12.14.1
通过在终端上运行上述命令,nvm将安装Node.js版本12.14.1
。
提示:nvm-windows用户必须在安装后运行nvm use 12.14.1
。
nvm遵循SemVer ,因此,如果要安装(例如,最新的12.14
补丁),可以通过运行以下命令进行安装:
nvm install 12.14
然后,nvm将安装Node.js版本12.14.X
,其中X
是最高的可用版本。 在撰写本文时,该值为1,因此您将在系统上安装12.14.1
版本。
您可以通过运行以下命令查看可用版本的完整列表:
nvm ls-remote
对于nvm-windows,这是:
nvm ls available
提示:列出所有可用的Node版本会产生很多输出。 Linux用户可能希望用qpipe less
或grep
他们想要的版本。 例如, nvm ls-remote | less
nvm ls-remote | less
或nvm ls-remote | grep v12
nvm ls-remote | grep v12
。
在安装Node.js实例时,nvm还将安装兼容的npm版本。 每个节点版本可能会带来不同的npm版本,您可以运行npm -v
来检查当前使用的版本。 全局安装的npm软件包不会在不同的Node.js版本之间共享,因为这可能会导致不兼容。 而是将它们与当前Node版本一起安装在~/.nvm/versions/node/
。 这具有额外的优点,即用户不需要sudo
特权即可安装全局软件包。
幸运的是,在安装新的Node.js版本时,您可以从特定版本重新安装npm全局软件包。 例如:
nvm install v12.14.1 --reinstall-packages-from=10.18.1
通过运行上述命令,nvm将安装Node.js 12.14.1
版本(对应的npm版本),并重新安装为10.18.1
版本安装的全局npm软件包。
如果不确定最新版本,可以使用node
别名:
nvm install node
当前将13.6.0
版本13.6.0
。
或者,您可以使用以下命令安装最新的LTS版本 :
nvm install --lts
当前将12.14.1
版本。
您还可以通过运行以下命令来卸载不再认为有用的任何实例:
nvm uninstall 13.6.0
到目前为止,我们已经了解了如何安装不同的Node版本。 现在让我们看一下如何在它们之间切换。 首先,请注意,安装新版本后,它将自动投入使用。 因此,如果您安装最新的Node.js版本,然后立即运行node -v
,您将看到最新版本的输出。
要切换已安装的版本,nvm提供了nvm use
命令。 这与install命令类似。 因此,您需要在此之后加上版本号或别名。
切换到Node.js版本13.6.0
:
nvm use 13.6.0
切换到Node.js版本12.14.1
:
nvm use 12.14.1
切换到最新的Node.js版本:
nvm use node
切换到最新的LTS版本:
nvm use --lts
切换到其他版本时,nvm将使终端符号中的node
实例链接到正确的Node.js实例。
除了nvm附带的别名之外,您还可以创建自定义别名。 例如,通过运行:
nvm alias awesome-version 13.6.0
您正在为Node.js版本13.6.0
设置一个别名为“ awesome-version”的13.6.0
。 因此,如果您现在运行:
nvm use awesome-version
nvm会将node
切换到版本13.6.0
。 您可以通过运行以下命令删除别名:
nvm unalias awesome-version
您还可以通过将版本定位为“默认”别名来设置要在任何shell中使用的默认实例,如下所示:
nvm alias default 12.14.1
您可以随时通过运行以下命令检查已安装的版本:
nvm ls
这将显示类似于以下内容:
绿色条目(左侧带有箭头)是当前使用的版本。 在已安装的版本下方,有可用别名的列表。 现在尝试执行以下命令:
nvm use node
nvm ls
它将显示如下:
您还可以通过以下命令检查当前使用的是什么版本:
nvm current
诸如rbenv之类的版本管理器允许您基于每个项目指定Ruby版本(通过将该版本写入当前目录中的.ruby-version
文件)。 对于nvm来说,这是可能的,如果您在项目内创建.nvmrc
文件并指定版本号,则可以cd进入项目目录并键入nvm use
。 然后,nvm将读取.nvmrc
文件的内容,并使用您指定的任何版本的Node。
如果对您来说自动完成是很重要的,则在项目主页上有几个摘要,您可以将它们添加到.bashrc
或.zshrc
文件中,以实现此目的。
这是ZSH代码段。 将其放在您的nvm配置下面:
autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
现在,当您使用.nvmrc
文件切换到目录时,您的Shell将自动更改Node版本。
nvm提供了一些其他更高级或更不常用的命令。
您可以直接针对已安装的版本运行命令,而无需切换node
变量:
nvm run 13.6.0 --version
您可以在子shell上针对特定版本运行命令:
nvm exec 13.6.0 node --version
您可以获取特定已安装版本的Node.js可执行文件的路径:
nvm which 13.6.0
在配置需要知道当前版本的Node所在位置的文本编辑器插件时,这可能很有用。
对于任何Node.js开发人员而言,nvm都是一个很好的工具。 它实现了无忧安装,并且可以在不同版本之间轻松切换,从而节省了真正重要的时间。
感谢nvm的创建者Tim Caswell ,也感谢Corey Butler的nvm for Windows支持,当然也感谢那些为这些伟大项目做出贡献的人。 Node.js社区非常感谢您的工作。
你呢? 您使用nvm吗? 您的经历如何? 如果您想聊天,请在Twitter上找到Michael或James 。
翻译自: https://www.sitepoint.com/quick-tip-multiple-versions-node-nvm/
nvm 安装node.js