使用nvm和nrm优化node.js工作流的方法


Posted in Javascript onJanuary 17, 2019

对于一个 Web 开发从业人员的电脑,node.js 和它的 npm 包管理工具那是少不了的,但是 node.js 的更新速度是非常快的,而生产环境一般选择使用 LTS(Long-term Support)版本,如何高效切换 node.js 的版本呢?对,使用 nvm。

使用 nvm

首先安装 nvm(github),使用官方文档的方法安装:

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

或者使用Wget:

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

然后可以下面的配置放入你的系统环境变量的文件中(通常安装过程中已经自动添加了),通常是这个文件就是 .bash_profile,在你的用户名文件夹下:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

好了,这时候直接输入 nvm 这个命令会出现 nvm: command not found,这是需要重新启动一下你的命令行工具就行了。

重新之后,我就可以使用它来管理我们的 node.js 的版本了。

安装最新版 node.js:

nvm install node

列出可以安装的 node.js 的版本:

nvm ls-remote

安装 node.js 某个具体版本,比如常用的 6.10.0:

nvm install v6.10.0

安装最新版,稳定版,lts 版本

nvm install node
nvm install stable
nvm install lts/*

安装 Node 新版本的同时,从另外一个仓库重新安装以前的包

nvm install node --reinstall-packages-from=v6.10.0

列出电脑中目前安装的所有的 node.js 的版本:

nvm list

看到了所有的可用的版本号,我们来切换版本:

nvm use v7.7.1

好了,熟悉这行常用命令已经够用了。但是,对于国内用户,还有个问题未解决,就是包管理工具 npm,经常安装一些包时会因为网络问题会出错,这是英文安装源是在国外服务器,现在我们想切换安装源的地址怎么办?对,使用 nrm。

使用 nrm

首先全局安装 nrm:

npm install -g nrm

安装完后就可以立即使用了,我们来列出可用的源:

nrm ls

会发现列出了下面几个源:

npm ---- https://registry.npmjs.org/
cnpm --- http://r.cnpmjs.org/
taobao - https://registry.npm.taobao.org/
nj ----- https://registry.nodejitsu.com/
rednpm - http://registry.mirror.cqupt.edu.cn/
npmMirror  https://skimdb.npmjs.com/registry/
edunpm - http://registry.enpmjs.org/

当然这里我们选择国内淘宝的源:

nrm use taobao

好了一切大功告成!

更简单的 Node 版本管理工具 n

另一款更简单好用的 Node 版本管理工具,它本身是一个 Node 模块,叫做 n.

安装 n 非常简单:

npm -g install n

要使用 n 安装特定版本的 node,只需要如下命令:

n stable #安装最新的稳定版
n lts #安装最新的 LTS 版
n 6.9.0 #安装特定的 v6.9.0 版本

安装完成多个版本后,直接输入不带参数的 n 命令,会出现一个已安装版本的列表,用键盘上下键选择版本,然后回车,就可以切换默认 Node 版本。

假如我们将默认的 Node 版本设置为 6.10.0 了,而我们要使用 7.6.0 启动某个应用,也非常简单,只需要:

n use 7.6.0 index.js

最后,我们可以创建一个快捷的命令:

echo alias node7="\"n use 7.6.0 --harmony-async-await\"" >> ~/.bashrc
source ~/.bashrc

这样我们就可以愉快地使用 node v7.x.x 运行我们的 js 了:

node7 index.js

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

Javascript 相关文章推荐
javascript 循环读取JSON数据的代码
Jul 17 Javascript
js propertychange和oninput事件
Sep 28 Javascript
Bootstrap模态对话框的简单使用
Apr 29 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
Apr 13 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
Mar 14 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
通过JS深度判断两个对象字段相同
Jun 14 Javascript
layui-select动态选中值的例子
Sep 23 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
微信小程序加载机制及运行机制图解
Nov 27 Javascript
js实现限定范围拖拽的示例
Oct 26 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
Jan 17 #Javascript
微信小程序使用wxParse解析html的方法示例
Jan 17 #Javascript
nvm、nrm、npm 安装和使用详解(小结)
Jan 17 #Javascript
JavaScript之实现一个简单的Vue示例
Jan 17 #Javascript
如何能分清npm cnpm npx nvm
Jan 17 #Javascript
JavaScript设计模式之装饰者模式实例详解
Jan 17 #Javascript
npm 常用命令详解(小结)
Jan 17 #Javascript
You might like
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
php限制文件下载速度的代码
2015/10/20 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
js 走马灯简单实例
2013/11/21 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python中列表(list)操作方法汇总
2014/08/18 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
请说出几个常用的异常类
2013/01/08 面试题
Linux文件系统类型
2012/02/15 面试题
房地产项目建议书
2014/03/12 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
高中社区服务活动报告
2015/02/05 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
教你怎么用Python操作MySql数据库
2021/05/31 Python