使用nvm让不同版本的Node.js共存

发布时间:2019-09-21 11:05:47编辑:auto阅读(2231)

    译者导读

    如果使用过Python,可能对Python的多版本共存有印象。Python3虽然是目前推荐的版本,但是Python2仍然有许多Lib没有支持到Python3。此时我们可以用pyenv或者virtualenv或者直接用官方最新的的pyvenv。
    同样的,在Node.js中,我们也能实现这个功能。

    正文

    当我们在开发的时候,通常会遇到这么一种情况:手上有好几个项目,每个项目有不同需求,而不同项目必须运行在不同版本的Node.js中。如果没有一个合适的工具,那这个问题将会很难解决。因此,nvm诞生了。

    安装nvm

    nvm是Node Version Manager的缩写(注意不是Virtual Machine)。从名字看出,nvm就是一个版本管理器。它提供了一个命令行接口让我们可以用一个命令安装不同版本的Node,让我们可以设置默认环境,并在不同环境中切换。

    操作系统支持

    nvm支持Linux和OSX,但这并不是说Window不能用。nvm-windows就是在Windows上运行的版本。不过,nvm-windows并不是nvm的简单移植,也和它没有任何关系。但下面介绍的所有命令,都可以运行在nvm-windows中。

    安装

    Windows

    首先最重要的是:一定要卸载原本已经安装过的Node.js,否则会发生冲突的。然后下载nvm-windows最新的安装包。直接安装即可。

    OS X/Linux

    和Windows不同,我们并不一定要先卸载原有的Node。当然我们推荐还是先卸载掉比较好。另外,你还需要C++编译器,Linux发行版一般不用担心,像Ubuntu都可以直接用build-essential套件,OS X的话,可以用X-Code的命令行工具。运行这个命令即可:

    xcode-select --install

    在Linux中:(如果是Debian发行版的话)

    sudo apt-get install build-essential

    然后我们可以用

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

    或者

    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

    从远程下载install.sh脚本并执行。注意这个版本年数字(v0.31.0)会随着项目开发而变化。随时通过官方最新安装命令来检查最新安装版本是有好处的。

    使用nvm

    如果安装成功了,我们可以从命令行运行命令nvm

    安装多版本Node.js

    例如,我们要安装4.2.2版本,可以用如下命令:

    nvm install 4.2.2

    nvm遵守语义化版本命名规则。例如,你想安装最新的4.2系列的最新的一个版本的话,可以运行:

    nvm install 4.2

    nvm会寻找4.2.x中最高的版本来安装。在写作本文的时候,x=6。
    你可以通过以下命令来列出远程服务器上所有的可用版本:

    nvm ls-remote

    Windows的话,就是:

    nvm ls available

    在多环境中,npm该如何使用呢?

    每个版本的Node都会自带一个不同版本的npm,可以用npm -v来查看npm的版本。全局安装的npm包并不会在不同的Node环境中共享,因为这会引起兼容问题。它们被放在了不同版本的目录下,例如~/.nvm/versions/node/<version>/lib/node_modules这样的目录。这刚好也省去我们在Linux中使用sudo的功夫了。因为这是用户的主文件夹,并不会引起权限问题。

    但问题来了,我要装的每个版本的Node里的包,都要重新再装一次?幸运的是,我们有个办法来解决我们的问题,运行下面这个命令,可以从特定版本导入到我们将要安装的新版本Node

    nvm install v5.0.0 --reinstall-packages-from=4.2

    除此之外,npm还可以安装Node的其他实现。例如iojs(一个基于ES6的Node实现,现在已经和Node合并,不再开发——译者注)

    nvm install iojs-v3.2.0

    上面的命令讲会安装iojs到系统中。
    下面几个是方便我们使用的快捷命令:

    • node – 安装最新版Node

    • iojs – 安装最新版iojs(目前iojs已经停止开发——译者注)

    • unstable – 安装最新不稳定版本的Node
      例如,我们可以用下面的命令直接安装最新版Node:

    nvm uninstall 4.2.2

    在不同版本间切换

    首先,每当我们安装了一个新版本Node后,全局环境会自动把这个新版本设置为默认。
    nvm提供了一个命令nvm use。这个命令的使用方法和install命令类似。例如,切换到4.2.2:

    nvm use 4.2.2

    切换到最新的4.2.6(本文写作的时候最新版是4.2.6):

    nvm use 4.2

    切换到iojs:

    nvm use iojs-v3.2.0

    切换到最新版:

    nvm use node

    每次执行切换的时候,系统都会把node的可执行文件链接放到特定版本的文件上。
    我们还可以用nvm给不同的版本号设置别名(注意这里是给版本号设置别名,不是给不同版本的Node实例设置别名——译者注):

    nvm alias awesome-version 4.2.2

    这样一来,我们给4.2.2这个版本号起了一个名字叫做awesome-version,然后我们可以运行:

    nvm use awesome-version

    来切换。
    下面这个命令可以取消别名:

    nvm unalias awesome-version

    另外,你还可以设置default这个特殊别名

    nvm alias default node

    这个操作可以设置默认的实例,并且在其他操作中也有用。

    列出已安装实例

    执行

    nvm ls

    上面绿色箭头是当前正在使用的版本,下面列出的还有设置过的别名。

    在每个项目中使用不同版本

    我们可以通过创建项目目录中的.nvmrc文件来指定要使用的Node版本。之后在项目目录中执行nvm use即可。.nvmrc文件内容只需要遵守上文提到的语义化版本规则即可。另外还有个工具叫做avn,可以自动化这个过程。

    其他命令

    直接运行特定版本的Node

    nvm run 4.2.2 --version

    在当前终端的子进程中运行特定版本的Node

    nvm exec 4.2.2 node --version

    确认某个版本Node的路径

    nvm which 4.2.2

    原文信息

    原文链接:http://www.sitepoint.com/quick-tip-multiple-versions-node-nvm/
    原文作者: Bruno Mota
    原文发布日期:2016年3月14日
    翻译时间:2016年4月4日
    原作者简介:精通JS,7年Web从业经验。主要贡献开源项目有Relax,一个基于JS的CMS系统。

    本翻译转载请注明出处:风虎技术博客


关键字

上一篇: python快速教程

下一篇: 2007-3-3第一天CCNA课