node.js越来越热,应用的场景也越来越多。

但也因为是开源软件,所以具备大多数开源软件都存在的“版本问题”,版本发展很快,版本前后差异性大,老系统用新版本node跑不过,全局安装的第三方组件和node版本相关造成全局版本混乱。

nvm是解决这一问题的利器。

nvm是node版本管理工具,主要特点:

1.可安装多版本的node。

2.灵活切换当前的node版本。

3.以沙箱方式全局安装第三方组件到对应版本的node中。

4.通过.vnmrc文件,方便灵活地指定各应用系统所需的node版本进行运行。

可惜目前只支持linux,OS系统。

接下来,就见证一下它的能力。

安装nvm

通过下面的命令可进行一步到位的安装,下面两种方式可二选一。

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

或者:

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

安装完后,验证安装

command -v nvm

默认会在“/home/个人账户”目录下会生成.nvm的隐藏目录,所有的node会以沙箱的方式装到该目录下。

安装完成。

详细可参考官方:https://github.com/creationix/nvm

安装多版本node

在命令行中运行命令,安装当前最新的稳定版。

nvm install stable

当前最新的稳定版是6.3.0。

运行命令,指明版本,安装早期的版本0.12.4。

nvm install 0.12.4

安装后,当前使用的node版本默认为最后一次安装的版本,在命令行中运行命令可查看当前版本。

nvm current

切换node版本

运行命令切换。

nvm use 6

显示所有安装的版本

运行命令,列出所有版本。

nvm ls

左边有箭头的代表当前使用中的版本。

安装全局组件

非nvm管理的情况下,全局组件是安装到/usr/local/lib/node_modules下,然后通过软连接的方式把包中bin目录下的可执行文件链接到/usr/local/bin。不管用什么版本都装到这些目录下,多版本就没法玩了。

在nvm管理下,以沙箱的方式,全局组件会装到.nvm目录的当前版本node下,也就是装在nvm这个沙箱里,跟在指定版本的node下,当前有什么版本的node,就有对应的全局组件。这是nvm强大的地方,在多运行环境的管理和切换极为好用。

下面,运行命令在当前6.3.0的node版本下以全局的方式安装express生成器。

npm install -g express-generator

express -V

可以清楚的看到express生成器被安装到了当前版本的node目录下。

express默认用的是最新的版本,这里是4.13.4。

现在,切换到0.12.4版本

nvm use 0

然后,全局安装express生成器3.0版。

npm install -g express-generator@3

也可以清楚的看到express生成器装到了0.12.4版node目录下,装完后express版本是3.0.0。

可以再将node版本切换到6,那么当前的express版本又会切换成对应的版本。

很方便,很强大。

使用.nvmrc文件运行

在服务器上很多时候会运行多个应用系统,每个应用系统使用的node版本是不一样的,老系统用0.12.x甚至0.10.x,新系统用了新特新所以用最新的node版本,都很实际很正常。

为了让不同的应用系统使用各自所需的node版本运行,我们只需在各应用系统内的根目录里生成一个.nvmrc文件,在其内写一个版本号,利用nvm run <系统启动文件>的方式运行系统,即可完成要求。

做个实验。

建个demo的文件夹,在其下写一个app1.js文件,其内容为:

console.log(process.versions);

只有一行代码,把当前运行的node版本输出到控制台。

与app1.js同级,写一个.nvmrc文件,其中的版本号写“0”,目的是要在0.12.4版本下运行,可以用命令:

echo '0' > .nvmrc

我们将当前的node版本切至6,然后运行:

nvm use 6
nvm run app1.js

运行效果:

可以看到运行demo的node版本取决于.nvmrc中写的版本。

通过.nvmrc作为运行版本配置,用nvm run命令进行启动的方式可以方便的完成同一个服务器运行多个不同版本的应用系统,非常方便灵活。

使用nvm利器,管理node版本的更多相关文章

  1. windows 安装nvm步骤(shi'yongnvm-windows管理node版本):

    瞎几把前言:mac上可以用n来管理node版本,私以为n很好用.家里的win7台式机一直没有安装过任何管理工具,今天来给家里电脑安装一下nvw-windows,一个用于windows系统的node版本 ...

  2. win上使用nvm管理node版本

    win上使用nvm管理node版本 若想让nvm管理机器上所有的node版本,首先需要卸载电脑上已有的node(很重要), 然后下载nvm在win上的安装包 windows-nvm的下载地址 下载 下 ...

  3. 管理 node 版本,选择 nvm 还是 n?

    来源:http://taobaofed.org/blog/2015/11/17/nvm-or-n/ 引子 我本机安装着 nvm,而 node 本来一直运行在 0.x 的老版本上.后来为了跑 ES6,我 ...

  4. 【前端开发】nrm切换淘宝镜像&nvm管理node版本及切换

    说明:nrm是切换淘宝镜像用的,nvm是node的版本切换用的(可在自己电脑安装多个版本node,便于不同项目的支持) 一.nrm的安装及常见命令: 安装nrmnpm install -g nrm 查 ...

  5. 使用 nvm 来管理nodejs版本 。

    最近需要升级一下node版本,所以使用nvm搞一搞. 1. 下载 nvm 在 github 下载非安装版本的nvm包https://github.com/coreybutler/nvm-windows ...

  6. 让 Homebrew 走代理更新 + brew 管理 node 版本

    0.前言 环境:MacOS 背景:整理下今天所做的配置. 1. 让 Homebrew 走代理更新 brew update 就卡住了,即使开了 shadowsocks 也不行.因为 shadowsock ...

  7. 【node】使用nvm管理node版本

    写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你想快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换: 使用nvm来安 ...

  8. nvm管理node版本

    一.介绍与作用 不同的项目中可能使用的node版本不同,对于维护多个版本的node就是一件麻烦事了,而nvm就可以很方便的管理不同的node版本, 可以在不同的node版本间切换使用.NVM资源(针对 ...

  9. 使用nvm管理node版本时,各个版本下公用npm安装的插件问题

    因为使用了NVM(node版本管理工具),所以在切换node版本的时候安装的插件不能共享使用,必须重新安装,导致不必要的工作量 所以我将npm(node包管理工具提取出来) 进行node版本之间的共享 ...

随机推荐

  1. Jquery的事件操作和文档操作

    对于熟悉前端开发的小伙伴,相信对于Jquery一定不陌生,相对于JavaScript的繁琐,Jquery更加的简洁,当然简洁不意味着简单,我们可以使用Jquery完成我们想要实现全部功能,这里为小白们 ...

  2. 开源一个跨平台运行的服务插件 - TaskCore.MainForm

    本次将要很大家分享的是一个跨平台运行的服务插件 - TaskCore.MainForm,此框架是使用.netcore来写的,现在netcore已经支持很多系统平台运行了,所以将以前的Task.Main ...

  3. 缓存工厂之Redis缓存

    这几天没有按照计划分享技术博文,主要是去医院了,这里一想到在医院经历的种种,我真的有话要说:医院里的医务人员曾经被吹捧为美丽+和蔼+可亲的天使,在经受5天左右相互接触后不得不让感慨:遇见的有些人员在挂 ...

  4. MySQL中interactive_timeout和wait_timeout的区别

    在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR (HY000): Lost connection to MySQL server ...

  5. 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~

    一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...

  6. JQuery实现表格的增加行和删除行

    利用JQuery实现datatables插件的增加和删除行操作 在学习过程中遇到了这个利用JQuery对表格行的增加和删除,特记录下来以供初学者参考. 下面是主要的代码: <meta http- ...

  7. Web 前端攻防(2014版)

    在百度 FEX 团队时写的.有次让我写点前端开发中注意的安全规范,结果写着写着就跑题了,写了一堆纯前端实现的攻击方式...当然还有防范措施. 文章就懒得粘过来了~ 直接贴个地址算了:) http:// ...

  8. 性能测试工具 wrk 安装与使用

    介绍 今天给大家介绍一款开源的性能测试工具 wrk,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以 ...

  9. Webgl的2D开发方案(一)spritebatcher

    使用TypeScript 和 webgl 开发   第一步:实现了SpriteBatcher 例子如下 http://oak2x0a9v.bkt.clouddn.com/test/index.html ...

  10. [转]keil使用详解

    第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过 ...