阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

    教程列表

    数据库
    抓包专区
    测试专区

    nvm 教程

    目前主流的 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

    参考链接

    卖前端学习教程

    只需几十元,就能买到培训班的内部教程!开启高薪之路!

    零基础小白阿里P7的教程都有!

    同时长期收购所有培训班的前端教程

    目录
    目录