大大的无奈
GWF 内的开发者,特别是安卓和前端开发者,估计真的对下载依赖这事很无奈。
在这里,突然想赞叹一下 goproxy,感谢他给 Gopher 带来的便利 ★,°:.☆( ̄▽ ̄)/$:.°★ 。
说回正事,下个依赖整大半天,幸运的龟速下完,更悲惨的则是直接下不了。
对此,最简单的解决方案就是借用国内的镜像,借助 nrm 你可以轻松切换 npm 的源,当然,其中包括大家熟知的淘宝镜像。
但是切换源也没能解决所有问题,因为有一些依赖不完全托管在 npm。这些依赖在安装前后可能会请求寄存在 github 或其他地方的资源。
原本下载 github 的静态资源(raw.githubusercontent.com
)就很慢,到了近年,直接就墙了。还好你可以安装 cnpm,多数人都知道 cnpm 用的就是淘宝镜像,特快,但不止如此,cnpm 对资源中对 github 的依赖也有一些应对措施,对 electron、node-sass 等常用库的资源,cnpm 也进行了镜像。
但是其他的冷门库就没这么幸运了,你需要再想想办法。
其一,改 host,就相当于给你的地址加一个电话本,请求这个地址的时候就直接知道一个可用的 ip。详细做法看这里。
其二,就用些科学的方法下载你的依赖……至于怎么科学,就不在这里展开了,下面直接以科学的 sock 协议为例:
对安卓来说比较简单,有图形界面,直接把 sock5 填到 proxy 就行了。
在 cmd 中需要运行:
set http_proxy=socks5://127.0.0.1:2080set https_proxy=socks5://127.0.0.1:2080
然后运行 echo %http_proxy%
可知已经修改,接着再来一个 curl ifconfig.io
,看到 ip 变了,那就是修改成功了。
npm 安装时的暴力全覆盖
之所以觉得代理设置总觉得有时候可以有时候不行,很可能是因为使用的 shell 不同,下面给大家总结各种常用 shell 的设置方式:
# cmd 的set HTTPS_PROXY=http://127.0.0.1:2080set HTTP_PROXY=http://127.0.0.1:2080# gitbash 的export HTTPS_PROXY=http://127.0.0.1:2080export HTTP_PROXY=http://127.0.0.1:2080# powershell 的$env:HTTP_PROXY = "http://127.0.0.1:2080"$env:HTTPS_PROXY = "http://127.0.0.1:2080"# 应该设置完命令行代理就能用,还不行就再设npm的代理npm config set registry http://registry.npmjs.org/npm config set proxy http://127.0.0.1:2080npm config set https-proxy http://127.0.0.1:2080npm config set strict-ssl false
npm 设置完 socks5 报 tunneling socket could not be established, cause=socket hang up
也不知道怎么解决。
最好还是把 sock5 再代理一次到 http 吧(我直接用的 trojan QT5,挺方便的),唉。
git push 上不去
git config --global http.sslVerify "false"git config --local http.proxy 127.0.0.1:2080