文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-01-31 07:19

关注

译者导读

如果使用过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系统。

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


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯