五折的稻田

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

因为换了系统,又得开始折腾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


随时更新。。。