nvm 教程

🌙
手机阅读
本文目录结构
axihe

目前主流的 node 版本管理工具有两种,nvmn

nvm 有点类似于 Python 的 virtualenv 或者 Ruby 的 rvm,每个 node 版本的模块都会被安装在各自版本的沙箱里面(因此切换版本后模块需重新安装),因此考虑到需要时常对 node 版本进行切换测试兼容性和一些模块对 node 版本的限制,我选择了使用 nvm 作为管理工具,下面就来说说 nvm 的安装和使用过程。

npm : https://www.npmjs.com/package/nvm

安装

这里主要介绍 mac 的安装 (linux 可以参照),

windows 系统的话可以参考 https://github.com/coreybutler/nvm-windows

推荐的安装方法

卸载已安装到全局的 node/npm

如果之前是在官网下载的 node 安装包,运行后会自动安装在全局目录,其中

  • node 命令在 /usr/local/bin/node
  • npm 命令在全局 node_modules 目录中,具体路径为 /usr/local/lib/node_modules/npm

安装 nvm 之后最好先删除下已安装的 node 和全局 node 模块:

#查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装
npm ls -g --depth=0

#删除全局 node_modules 目录
sudo rm -rf /usr/local/lib/node_modules

#删除 node
sudo rm /usr/local/bin/node

#删除全局 node 模块注册的软链
cd  /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

安装 nvm

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

安装完成后请重新打开终端环境,Mac 下推荐使用 oh-my-zsh 代替默认的 bash shell。

安装完成后,发现使用 nvm install stable 安装 node 速度很慢,大概大家都知道我大天朝的国情。

接下来介绍如何使用国内镜像快速安装 node:

把环境变量 NVM_NODEJS_ORG_MIRROR, 那么我建议你加入到 .bash_profile 文件中:

# nvm
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

然后你可以继续非常方便地安装各个版本的 node 了,你可以查看一下你当前已经安装的版本:

$ nvm ls
         nvm
     v0.8.26
    v0.10.26
    v0.11.11
->  v4.3.2

使用 cnpm 加速 npm

同理 nvm , npm 默认是从国外的源获取和下载包信息,不慢才奇怪。

可以通过简单的 —registry 参数,使用国内的镜像 https://registry.npm.taobao.org

$ npm --registry=https://registry.npm.taobao.org install koa

于是屏幕又哗啦哗啦地一大片输出:

$ npm --registry=https://registry.npm.taobao.org install koa
npm http GET https://registry.npm.taobao.org/koa
npm http 200 https://registry.npm.taobao.org/koa
...
npm http 200 https://registry.npm.taobao.org/negotiator
npm http 200 https://registry.npm.taobao.org/keygrip
koa[@0](/user/0).5.2 node_modules/koa
├── koa-compose[@2](/user/2).2.0
├── statuses[@1](/user/1).0.2
├── finished[@1](/user/1).1.1
├── escape-html[@1](/user/1).0.1
├── only[@0](/user/0).0.2
├── debug[@0](/user/0).8.0
├── fresh[@0](/user/0).2.2
├── type-is[@1](/user/1).0.1
├── delegates[@0](/user/0).0.3
├── mime[@1](/user/1).2.11
├── co[@3](/user/3).0.5
├── accepts[@1](/user/1).0.1 (negotiator[@0](/user/0).4.2)
└── cookies[@0](/user/0).4.0 (keygrip[@1](/user/1).0.0)

但是毕竟镜像跟官方的 npm 源还是会有一个同步时间差异,目前 cnpm 的默认同步时间间隔是 15 分钟。

如果你是模块发布者,或者你想马上同步一个模块,那么推荐你安装 cnpm cli:

$ npm --registry=https://registry.npm.taobao.org install cnpm -g

通过 cnpm 命令行,你可以快速同步任意模块:

$ cnpm sync koa connect mocha

我们还有一个 web 页面:

例如我想马上同步 koa, 直接打开浏览器:https://npm.taobao.org/sync/koa

或者你是命令行控,通过 open 命令打开:

$ open https://npm.taobao.org/sync/koa

如果你安装的模块依赖了 C++ 模块,需要编译,肯定会通过 node-gyp 来编译,

node-gyp 在第一次编译的时候,需要依赖 node 源代码,于是又会去 node dist 下载,

于是大家又会吐槽,怎么 npm 安装这么慢…

好吧,于是又要提到 –disturl 参数,通过七牛的镜像来下载:

$ npm --registry=https://registry.npm.taobao.org --disturl=https://npm.taobao.org/mirrors/node install microtime

再次要提到 cnpm cli, 它已经默认将 –registry 和 –disturl 都配置好了,谁用谁知道

如果不想使用 cnpm cli,可以

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

不推荐的安装方法

一开始我是使用 homebrew 来安装的,安装命令如下:

brew install nvm

安装完后,为了让你可以直接在 shell 使用 nvm 指令,必须在你的 .bash_profile 加入以下这行(习惯把设定放在。bashrc 的人可以把以下的。bash_profile 改成。bashrc)(注:如果没有这个文件,可以 touch 创建)

source $(brew --prefix nvm)/nvm.sh

或者直接输入以下这行来加入

$ echo "source $(brew --prefix nvm)/nvm.sh" >> .bash_profile

记得重新 source 你的 .bash_profile 来让设定生效

$ . ~/.bash_profile

OK,以上就完成了 nvm 的安裝。

我们来装一下 node v5.12.0

nvm install 5

安装成功后,使用 nvm use 来切换版本

nvm use v5.12.0

如果出现错误,请参照:https://github.com/nvm-sh/nvm/issues/855

参考链接


AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili 和抖音。

关注我: Github / 知乎

如果你加我的私人微信,麻烦写上您的 称呼,所在地区,职业,方便我备注,谢谢


本站的微信公众号

阿西河前端教程

Anbang

安邦的私人微信

微信号: yaolushan

Anbang

Bilibili(B站)

朱安邦

Anbang