详解如何使用nvm管理Node.js多版本


Posted in Javascript onMay 06, 2019

Node.js版本管理工具。Git地址:https://github.com/nvm-sh/nvm

安装nvm

Mac OS:

如果已经安装了node,在安装nvm之前,不需要卸载这个版本的node。这个版本的node后续会成为nvm中的system版本的node。

具体步骤如下:

首先安装C++编译器,使用XCode 的命令行工具,在Terminal中输入: xcode-select --install

然后在Terminal里输入:

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

或者:

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

⚠️注意:命令中的v0.34.0是随着最新版本变化的。可以去Git查看最新的版本。

重启Terminal(不然nvm不生效),然后输入下面的指令来查看是否安装成功: command -v nvm。如果返回 nvm 字样,就代表安装成功。

用nvm操作node

查看目前已有的node

如果在安装nvm之前,系统已经安装了Node.js,那么这个版本的Node.js将会成为system版本。

此时,在Terminal里输入:nvm ls,查看都安装了哪些node版本,会出现如下返回结果:

->    system
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)

上面返回的内容,代表,此时只有系统原来带的node版本,没有通过nvm安装任何的node版本。

安装其它版本的node

安装最新版本的node:

nvm install node

安装特定版本的node:

nvm install 10.15.3

其中,10.15.3为想要安装的node的版本号。

可以查看目前有哪些node可以安装:

nvm ls-remote

安装一个node的新版本以后,通过指令 nvm ls 查看会返回如下结果:

->   v10.15.3
     system
default -> 10.15.3 (-> v10.15.3)
node -> stable (-> v10.15.3) (default)
stable -> 10.15 (-> v10.15.3) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/dubnium (-> v10.15.3)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.0 (-> N/A)
lts/dubnium -> v10.15.3

可以发现,除了system以外,还出现了一个v10.15.3,而且自动应用了这个v10.15.3版本。

node版本切换

使用如下指令切换node版本:

nvm use system

返回如下内容,代表已经切换到system版本:

Now using system version of node: v8.11.3 (npm v6.9.0)

输入如下指令,切换到刚刚安装的版本:

nvm use 10.15.3

返回如下内容,代表已经切换到10.15.3版本:

Now using node v10.15.3 (npm v6.4.1)

对于目前的10.15.3,应为它是第一个通过nvm安装的node版本,所以自动给它分配了一个alias:default。所以,也可以通过这个指令切换到这个版本上:

nvm use default

也可以通过这个指令切换到已安装的最新的版本:

nvm use node

由于目前最新的版本就是default的10.15.3,所以就等同于nvm use default。

再安装一个版本:8.16.0。输入指令nvm install 8.16.0,返回如下内容:

->   v8.16.0
    v10.15.3
     system
default -> 10.15.3 (-> v10.15.3)
node -> stable (-> v10.15.3) (default)
stable -> 10.15 (-> v10.15.3) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/dubnium (-> v10.15.3)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.0
lts/dubnium -> v10.15.3

发现比之前多了一行-> v8.16.0,并且8.16.0被应用。

给特定版本分配alias

从8.16.0切换到别的版本以后,如果再想切换回来,只能通过nvm use 8.16.0。8.16.0不方便记忆,也不方便输入,可以通过给这个版本设置一个alias,来解决这个问题。输入如下指令:

nvm alias carbon 8.16.0

返回的结果:

carbon -> 8.16.0 (-> v8.16.0)

此时,再次输入nvm ls,会返回如下结果:

->   v8.16.0
    v10.15.3
     system
carbon -> 8.16.0 (-> v8.16.0)
default -> 10.15.3 (-> v10.15.3)
node -> stable (-> v10.15.3) (default)
stable -> 10.15 (-> v10.15.3) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/dubnium (-> v10.15.3)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.0
lts/dubnium -> v10.15.3

会发现多了一行carbon -> 8.16.0 (-> v8.16.0),这代表carbon就是版本8.16.0,所以如果想切换到8.16.0,可以输入如下指令:

nvm use carbon

也可以通过alias指令,改变default所代表的版本:

nvm alias default 8.16.0

8.16.0就成为default版本了。

输入nvm alias可以查看都有哪些已经设置好的alias。

还可以通过nvm unalias carbon来取消carbon这个alias。

卸载node

nvm uninstall alias/node

注意:不能卸载当前正在运行中的node版本。

可以通过nvm uninstall来查看有哪些版本可以卸载。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
May 12 Javascript
JavaScript实现经典排序算法之选择排序
Dec 28 Javascript
JS实现的简单拖拽功能示例
Mar 13 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
vue中改变滚动条样式的方法
Mar 03 Javascript
原生JS实现留言板
Mar 26 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
Jul 14 Javascript
关于AOP在JS中的实现与应用详解
May 06 #Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 #Javascript
一文读懂ES7中的javascript修饰器
May 06 #Javascript
JavaScript中AOP的实现与应用
May 06 #Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 #Javascript
vue如何截取字符串
May 06 #Javascript
用vscode开发vue应用的方法步骤
May 06 #Javascript
You might like
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
PHP array_push 数组函数
2009/12/26 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python 域名分析工具实现代码
2009/07/15 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
python 日期操作类代码
2018/05/05 Python
python实现简单登陆系统
2018/10/18 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
python多进程并行代码实例
2019/09/30 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
基于python实现操作git过程代码解析
2020/07/27 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
教师党员个人总结
2015/02/10 职场文书
孟佩杰观后感
2015/06/17 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL