npm、git clone网络很慢的解决方法汇总

Author Avatar
五折 1月 04, 2016

因为换了系统,又得开始折腾Linux下的各种软件环境
接触到很多基于Node.js的东西比如微信、Hexo等等
于是接二连三的麻烦就来了
npm 超慢
github 访问超卡
git clone更是慢的一笔
奈何Linux下使用SS并不像Windows下那么顺畅,用不了全局
于是被迫寻找各种提速优化方法,在此做个笔记供以后参考
也供路过的人借鉴(以下内容来源网络,出处零散固不做说明)

使用 cnpm 加速 npm

npm 默认是从国外的源获取和下载包信息, 不慢才奇怪.
可以通过简单的 –registry 参数, 使用国内的镜像 https://registry.npm.taobao.org :

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ 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:

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

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

1
$ cnpm sync koa connect mocha

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

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

如果你安装的模块依赖了 C++ 模块, 需要编译, 肯定会通过 node-gyp 来编译,
node-gyp 在第一次编译的时候, 需要依赖 node 源代码, 于是又会去 node dist 下载,
于是大家又会吐槽, 怎么 npm 安装这么慢…
好吧, 于是又要提到 –disturl 参数, 通过七牛的镜像来下载:

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

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

github 好慢

github慢, 或者说是它的资源 host 被堵而已, 可以通过简单的 hosts 映射解决:

1
185.31.16.184 github.global.ssl.fastly.net

随时更新。。。