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. 原生js实现tab选项卡里内嵌图片滚动特效代码

    <!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...

  2. 关于mysql授权账号权限时的空密码问题

    -root ~]$ mysql -uroot -p Enter password:ERROR 1045 (28000): Access denied for user ‘root’@'localhos ...

  3. Eclipse中Android公共库的正确建立及调用方法

    Eclipse中Android公共库的正确建立及调用方法 引言 之前一直头痛于没有办法在多个程序中共享资源,用作公共类库的方法也是使用的导出jar再导入的办法,现在终于初步搞明白了,可算解脱了~,分享 ...

  4. 使用maven profile实现多环境可移植构建

    mvn clean package -Pproduction即构建出生产环境需要的war包 mvn tomcat:redeploy -Ptest 即发布到测试环境 在开发过程中,我们的软件会面对不同的 ...

  5. c++重载、覆盖和隐藏

    看以前的:http://www.cnblogs.com/youxin/p/3305688.html 答案:a.成员函数被重载的特征:overload(1)相同的范围(在同一个类中):(2)函数名字相同 ...

  6. python换行写入文件

    今天用python做写入文件时,碰到,写入的东西不能换行,打开写入的文件都是一行.后来发现需要在写入的字符后面加上+'\n'. 另外python需要追加写入文件的时候,是用这个方法f = open(' ...

  7. 低压差稳压器AMS1585

    (1)高效线性稳压. (2)输出高达4.6A,最高输入电压15V,推荐最低压差1.5V(最低1.35V),最大压差12V. (3)两种封装:TO220(直插式),TO230(贴片). 典型电路如下图所 ...

  8. Hibernate(九)一对多双向关联映射

    上次的博文Hibernate从入门到精通(八)一对多单向关联映射中,我们讲解了一下一对多单向映射的相关 内容,这次我们讲解一下一对多双向映射的相关内容. 一对多双向关联映射 一对多双向关联映 射,即在 ...

  9. bzoj 1188 [HNOI2007]分裂游戏(SG函数,博弈)

    1188: [HNOI2007]分裂游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 733  Solved: 451[Submit][Status ...

  10. [转载]jQuery.extend 函数详解

    JQuery的extend扩展方法:      Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解.      一.Jquery的扩展方 ...