当你开发nodejs的 应用时,你可能会面对这么一种情况,就是你需要装多个不同版本的node在电脑上。这种情况可能发生在,当你有多个项目时,里边有不同的版本依赖需要去安装不同的版本,又或者正在开发的应用需要去兼容不容的node版本。没有一个好工具的话,基于一个项目的特定版本要求,这会增加许多大量的工作量并且会手动的去装很多不同的版本。幸运的是,这里有个好工具。
介绍nvm
nvm就是一款node版本管理器。出于对于这个名字的理解上,这个工具就会帮助你在不同的项目里不同的node版本间进行管理和切换。它提供了命令窗口,你可以使用一条很简单的命令就对不同的node版本进行安装。可以设置默认的Node版本,并且在默认值和更多版本号之间进行切换。
操作系统支持
nvm支持Linux和mac,但是并不是就不支持Windows操作用户。这里有一个名叫nvm-windows的工具提供给Windows用户去管理这个node版本。不管这个名字如何,nvm-windows不是nvm的克隆版,也不是与nvm毫无关联。然而,以下基本的命令(安装,不同版本之间的列举和切换)在nvm和nvm-windows都是通用的。
安装
首先我们介绍在Windows、mac、Linux如何安装。
windows: 在你的电脑上确保卸掉所有的nodejs版本,否则会跟这个安装起冲突。之后,下载最新的安装包 。运行安装程序,然后下一步下一步傻瓜式安装就可以了。
macOS/Linux: 虽然建议你移除掉以前nodejs版本,但是也可以不用这么做。这里有大量的在线资源可以让你去选择怎么做。当然如果你能移除掉所有的npm安装也是最好的,因为npm的安装也可能会跟nvm进行冲突。你也可以在电脑上使用命令窗口去安装。对于mac操作系统来说,你可以安装Xcode命令行工具。你可以运行以下语句进行安装:
xcode-select --install
在Linux上,你可以使用基础的安装包,使用以下工具(详情:apt):
sudo apt-get update
sudo apt-get install build-essential
如果使用 c++编译器的话,你可以使用cURL或者Wget去进行安装。在终端上,输入以下:
使用cURL
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
使用Wget
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
ps:版本会随着项目的发展而改变,所以最好去官网找一下最新的版本
可以克隆nvm的源码,然后对里边的bash文件进行配置,所以nvm才会适用于各种终端。
OK,nvm已经装好可以试用了。
使用nvm
假设你已经安装正确,这个nvm命令行已经适用于你的终端。我们来看看如何使用它去管理nodejs版本吧。
安装多版本的nodejs
nvm最重要的功能之一就是管理安装不同的nodejs版本。如此,nvm提供了nvm install 这个命令。你可以安装特定的想要的nodejs版本,只需要使用这个命令即可。例如:
nvm install 8.9.4
在终端中使用以上命令,nvm将会安装遵循版本规范的nodejs 8.9.4版本。假如你想要安装最新的nodejs版本,例如,最新的8.9包,你只需要运行以下命令:
nvm install 8.9
nvm,将会安装nodejs版本8.9.x的,这个x其实就是最高版本。假如写成8.9.4,那就会装上8.9.4的nodejs版本在你的系统上,你可以看到所有可安装的版本,只需使用以下命令:
nvm ls-remote
而nvm-windows,则是:
nvm ls available
npm
当你安装一个nodejs的实例时,nvm也会安装一个完整的npm版本。每一个node版本都会携带一个不一样的npm版本,你可以执行npm -v的命令去查看你当前所使用的npm版本是哪个。全局安装npm包是不能够在不同的nodejs版本里边共享的,因为会导致不兼容。然而,它们沿着现在的node版本下在此目录下~/.nvm/versions/node/<version>/lib/node_modules 安装。这里有一个好处就是,用户不需要sudo的权限去安装一个全局包。
幸运的是,当安装一个新的特定的nodejs版本时候,你也可以重新安装这个npm全局包。例如:
nvm install v9.0.0 --reinstall-packages-from=8.9
根据以上运行命令,nvm将会装9.0.0 的nodejs版本,联合着npm版本一起,并且重新安装指定的8.9版本的npm。
ps命令:
node:安装最新的nodejs版本
unstable:将会安装nodejs 0.11 版本,最新发布的不稳定版
所以,当你想要安装最新的nodejs版本时,你只需要
nvm install node
你也可以卸载任何的你不想要的实例,例如:
nvm uninstall 0.11
在不同的版本之间切换
迄今为止,我们已经了解了如何安装不同的node版本。现在让我们来试一试如何在不同的nodejs版本之间切换。注意的第一点,当安装最新的nodejs版本,是默认使用的。所以当你安装了最新的nodejs版本,使用命令 node -v 之后,你会看到最新的版本号。
为了去切换不同的版本号,nvm 提供了nvm use 这个命令。这个工作界面与cmd及其相似。所以你只需要安装一个或者不同的nodejs版本即可。
使用以下命令去验证以上说法,你可以:
切换到nodejs 8.9.4版本
nvm use 8.9.4
现在切换到nodejs 9.3.0版本
nvm use 9.3
现在切换到最新的nodejs版本
nvm use node
切换到最新的LTS nodejs 版本
nvm use node --lts
当切换不同的nodejs版本时,nvm将会利用你终端上的node实例去找相符合的nodejs版本。
你还可以创建自定义别名,而不是nvm提供的。例如使用以下命令:
nvm alias awesome-version 8.9.4
你也可以直接使用别名切换,可以使用以下命令:
nvm use awesome-version
你也删除别名运用以下命令:
nvm unalias awesome-version
你可以设置默认的目标实例设为default别名,就像这样:
nvm alias default node
例举所有的实例
任何时候你都可以检查你安装了哪些node实例,使用以下命令:
nvm ls
你也可以使用以下命令检查当前版本:
nvm current
基于每个项目制定特定node版本
版本管理例如像rbenv允许你去制定特定的ruby版本基于每一个项目。nvm也有这样类似的方法去创造一个 .nvmrc文件在项目里边去制定一个版本号,你也可以cd到文件目录下边去使用命令nvm use . nvm将会从.nvmrc文件中读取内容去制定你使用的node版本。
原文:https://www.sitepoint.com/quick-tip-multiple-versions-node-nvm/