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

本文主要介绍最近自己碰到的几个坑以及搜索到的相应解决方案:

  • 如何快速搭建 Node.js 开发环境.
  • 使用 npm 安装一些包速度很慢或者失败.
  • github 无法打开或者样式错乱.

快速搭建 Node.js 开发环境

如果你想长期做 node 开发, 或者想快速更新 node 版本, 或者想快速切换 node 版本, 那么请使用 nvm 来安装你的 node 开发环境, 保持系统的干净.

git clone nvm

直接从 github clone nvm 到本地, 这里假设大家都使用~/git目录存放 git 项目:

  1. $ cd ~/git
  2. $ git clone https://github.com/creationix/nvm.git

配置终端启动时自动执行source ~/git/nvm/nvm.sh, 在~/.bashrc, ~/.bash_profile, ~/.profile, 或者~/.zshrc文件添加以下命令:

  1. source ~/git/nvm/nvm.sh

重新打开你的终端, 输入nvm

  1. Node Version Manager
  2. Usage:
  3. nvm help Show this message
  4. nvm --version Print out the latest released version of nvm
  5. nvm install [-s] <version> Download and install a <version>, [-s] from source
  6. nvm uninstall <version> Uninstall a version
  7. nvm use <version> Modify PATH to use <version>
  8. nvm run <version> [<args>] Run <version> with <args> as arguments
  9. nvm current Display currently activated version
  10. nvm ls List installed versions
  11. nvm ls <version> List versions matching a given description
  12. nvm ls-remote List remote versions available for install
  13. nvm deactivate Undo effects of NVM on current shell
  14. nvm alias [<pattern>] Show all aliases beginning with <pattern>
  15. nvm alias <name> <version> Set an alias named <name> pointing to <version>
  16. nvm unalias <name> Deletes the alias named <name>
  17. nvm copy-packages <version> Install global NPM packages contained in <version> to current version
  18. Example:
  19. nvm install v0.10.24 Install a specific version number
  20. nvm use 0.10 Use the latest available 0.10.x release
  21. nvm run 0.10.24 myApp.js Run myApp.js using node v0.10.24
  22. nvm alias default 0.10.24 Set default node version on a shell
  23. Note:
  24. to remove, delete or uninstall nvm - just remove ~/.nvm, ~/.npm and ~/.bower folders`

使用 npm 安装包失败

由于GFW的强大威慑力,npm 好多安装包很慢或者直接安装error,相关解决方法主要有以下三种:

  • 通过config命令.
  1. npm config set registry http://registry.cnpmjs.org
  2. npm info underscore (如果上面配置正确这个命令会有字符串response)
  • 命令行指定.
  1. npm --registry http://registry.cnpmjs.org info underscore
  • 编辑~/.npmrc加入下面内容.
  1. registry = http://registry.cnpmjs.org

通过 nvm 安装任意版本的 node

nvm 默认是从 http://nodejs.org/dist/ 下载的, 国外服务器, 必然很慢, 好在 nvm 以及支持从镜像服务器下载包, 于是我们可以方便地从七牛的 node dist 镜像下载:

  1. $ NVM_NODEJS_ORG_MIRROR=http://dist.u.qiniudn.com nvm install 0.11.11

于是你就会看到一段非常快速进度条:

  1. ######################################################################## 100.0%
  2. Now using node v0.11.11

如果你不想每次都输入环境变量 NVM_NODEJS_ORG_MIRROR, 那么我建议你加入到 .bashrc 文件中:

  1. # nvm
  2. export NVM_NODEJS_ORG_MIRROR=http://dist.u.qiniudn.com
  3. source ~/git/nvm/nvm.sh

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

  1. $ nvm ls
  2. nvm
  3. v0.8.26
  4. v0.10.26
  5. v0.11.11
  6. -> v0.11.12

使用 cnpm 加上 npm

同理 nvm , npm 默认是从国外的源获取和下载包信息, 不慢才奇怪. 可以通过简单的 ·---registry· 参数, 使用国内的镜像 http://r.cnpmjs.org :

  1. $ npm --registry=http://r.cnpmjs.org install koa

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

  1. $ npm --registry=http://r.cnpmjs.org install koa
  2. npm http GET http://r.cnpmjs.org/koa
  3. npm http 200 http://r.cnpmjs.org/koa
  4. npm http GET http://r.cnpmjs.org/koa/download/koa-0.5.2.tgz
  5. npm http 200 http://r.cnpmjs.org/koa/download/koa-0.5.2.tgz
  6. npm http GET http://r.cnpmjs.org/escape-html
  7. npm http GET http://r.cnpmjs.org/statuses
  8. ...
  9. npm http 200 http://r.cnpmjs.org/negotiator
  10. npm http 200 http://r.cnpmjs.org/keygrip
  11. koa@0.5.2 node_modules/koa
  12. ├── koa-compose@2.2.0
  13. ├── statuses@1.0.2
  14. ├── finished@1.1.1
  15. ├── escape-html@1.0.1
  16. ├── only@0.0.2
  17. ├── debug@0.8.0
  18. ├── fresh@0.2.2
  19. ├── type-is@1.0.1
  20. ├── delegates@0.0.3
  21. ├── mime@1.2.11
  22. ├── co@3.0.5
  23. ├── accepts@1.0.1 (negotiator@0.4.2)
  24. └── cookies@0.4.0 (keygrip@1.0.0)

但是毕竟镜像跟官方的 npm 源还是会有一个同步时间差异, 目前 cnpm 的默认同步时间间隔是 15 分钟. 如果你是模块发布者, 或者你想马上同步一个模块, 那么推荐你安装 cnpm cli:

  1. $ npm --registry=http://r.cnpmjs.org install cnpm -g

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

  1. $ cnpm sync koa connect mocha

呃, 我就是不想安装 cnpm cli 怎么办? 哈哈, 早就想到你会这么懒了, 于是我们还有一个 web 页面: 例如我想马上同步 koa, 直接打开浏览器: http://cnpmjs.org/sync/koa 或者你是命令行控, 通过 open 命令打开:

  1. $ open http://cnpmjs.org/sync/koa

再次要提到 cnpm cli, 它已经默认将 --registry--disturl 都配置好了, 谁用谁知道. 写到这里, 就更快疑惑那些不想安装 cnpm cli 又吐槽 npm 慢的同学是基于什么考虑不在本地安装一个 cnpm 呢?

访问github 好慢或者github样式错乱

好了, 看到这里大家应该对 node 和 npm 已经没有速度慢的问题了. github 慢, 或者说是它的资源 host 被堵而已, 大家可以通过简单的 hosts 映射解决:

  1. 185.31.16.184 github.global.ssl.fastly.net

[转] 使用NVM快速搭建NODE开发环境的更多相关文章

  1. CentOS 7快速搭建Nodejs开发环境

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.学习Nodejs首先需要会安装环境.这里我介绍如 ...

  2. Linux下快速搭建php开发环境

    php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...

  3. Windows下快速搭建安卓开发环境android-studio

    Windows下快速搭建安卓开发环境android-studio 发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 安卓 搭建 Android Windows 快速 环境 Studi ...

  4. 【IntelliJ IDEA新手入门】IDEA如何快速搭建Java开发环境

    作为IntelliJ IDEA mac新手,IDEA如何快速搭建Java开发环境呢? 今天小编就给大家带来了IntelliJ IDEA mac使用教程,想知道IDEA如何快速搭建Java开发环境?那就 ...

  5. 利用CodeBlocks结合freeglut快速搭建OpenGL开发环境

    利用CodeBlocks结合freeglut快速搭建OpenGL开发环境 2018-12-19 10:15:48 再次超越梦想 阅读数 180更多 分类专栏: 我的开发日记   版权声明:本文为博主原 ...

  6. IDEA如何快速搭建Java开发环境

    作为IntelliJ IDEA mac新手,IDEA如何快速搭建Java开发环境呢?今天小编就给大家带来了IntelliJ IDEA mac使用教程,想知道IDEA如何快速搭建Java开发环境? 全局 ...

  7. 【转】使用nvm快速搭建 Node.js 开发环境

    原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...

  8. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...

  9. 使用Docker快速搭建PHP开发环境

    最近有个同事找过来,希望我对在很早之前写的一个PHP网站上增加一些功能,当时开发使用xampp构建的本地开发环境,但是现在我的笔记本电脑已经更新,没有当时的开发环境.本着尽量不往电脑上装无用软件的原则 ...

随机推荐

  1. log4j详细配置说明

    log4j配置祥解 第一步:加入log4j-1.2.8.jar到lib下.第二步:在CLASSPATH下建立log4j.properties.内容如下:1 log4j.rootCategory=INF ...

  2. 302重定向,MVC中的Get,Post请求。

    1.在访问页遇到重定向,Get,Post跳转处理,在跳转后的页面获取访问端的IP,他们的IP是否发生变化... 2.重定向处理后获取的IP还是访问端IP,而用Get,Post请求处理后,获取的访问端I ...

  3. SpringMVC源码阅读(一)

    DispatcherServlet是整个SpringMVC初始化和处理请求的重要类,作为一个servlet,拥有 public void init(ServletConfig config) thro ...

  4. Tomcat,Weblogic,WebSphere,JBoss四种服务器简单对比

    1,tomcat是Servlet容器,支持JSP.Servlet.JDBC等J2EE关键技术,常用于tomcat开发基于数据库.Servlet和JSP页面的Web应用.2,tomcat不是EJB容器, ...

  5. Learning LexRank——Graph-based Centrality as Salience in Text Summarization(一)

    (1)What is Sentence Centrality and Centroid-based Summarization ? Extractive summarization works by ...

  6. 基本数据类型的常量池与String类型常量池解析

    抛出样例: Integer a1  = new Integer(123);        Integer a2  = new Integer(123);        System.out.print ...

  7. new 与override 区别

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Newover ...

  8. C++ 1

    1 new 建立一个堆对象 new 类名(初值列表) 返回一个指针 int * p=new int(3)动态分配 2 delete  释放指针 delete p; delete [] p ;释放动态申 ...

  9. mac 目录详解

    打开Macintosh HD你会发现内中有四个文件夹 分别有——应用程序(Applications).系统(System).用户(User).资料库(Library).四个文件夹中又分别各有若干数量的 ...

  10. [LeetCode#191]Number of Bits

    Problem: Write a function that takes an unsigned integer and returns the number of ’1' bits it has ( ...