问题
在使用npm install
安装某个npm依赖包时,比如安装vue
npm install vue
发现进度条一直卡住不动,或者一个包下载很久,相信很多朋友也遇到过。原因应该是国内的网络连接npm速度比较慢,甚至很多的依赖包都无法直接下载下来。那么如何解决这个问题呢?
写在前面:
本文的内容大致为笔者在使用很多方案没有很好的效果之后,还是选择了买付费vpn来解决,如果已经对这个npm安装问题有所了解的,建议直接开始使用VPN。推荐笔者用的一个很稳定的VPN:Express VPN
正文开始:
方案一:淘宝镜像
npm淘宝镜像源是淘宝出品的专为npm安装加速的国内镜像代理站,官方说明是每10分钟同步一次。国内代理也是用淘宝镜像最多,并且服务稳定。
代理的原理很简单,国外的服务器距离我们比较远,连接上去当然比较慢了,国内的淘宝服务器就多了,又近,当然你就比较快了。
使用淘宝的代理镜像有三种具体方案,下面给大家详细说明
- 一是当你是单个依赖无法安装的时候,可以简单的在安装命令后面加上
--registry=https://registry.npm.taobao.org
,将此次安装的npm源切换到淘宝的npm镜像站。比如安装vue
npm install vue --registry=https://registry.npm.taobao.org # 一次性使用淘宝镜像
这个方案的好处是,针对个别的依赖库操作即可,不需要安装额外的依赖或者修改配置。
- 二是切换npm源的方式。直接把npm安装时用的来源切换到淘宝
npm.taobao.org
,就不用每次输入后缀了。设置
npm config set registry https://registry.npm.taobao.org # 设置npm镜像源为淘宝镜像
之后安装依赖还是正常的npm命令就行。
后续如果不想使用npm.taobao.org
作为源了,可以重新切换回来
npm config set registry http://registry.npmjs.org # 设置npm镜像源为淘宝镜像
npm config get registry # 查看npm当前镜像源
- 三是采用cnpm的安装方式,本质是也是切换镜像源。先安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org # 目的是安装cnpm这个库,也是采用一次性使用淘宝镜像的方式
再在安装npm包时把npm 改为cnpm即可,比如安装vue
cnpm install vue
这个方法的好处是,同时支持cnpm和npm两种方式安装npm包,而不用像前面两个方法一样,要么加后缀要么重新切换源。
注意点:淘宝镜像源的方案也不是一劳永逸的,因为有小伙伴反馈说用了淘宝镜像安装后的依赖库有问题,但是用npm安装的就没问题,这种情况很少出现,但是一旦遇到,就是大坑,小伙伴们注意防范。
方案二:yarn
yarn是新一代替代npm安装依赖包的方案,更好的处理依赖树,所以有些npm安装失败的问题,换成yarn可能就好了。
这里简要列出各个系统环境下的安装方法,如有疑问,可以访问yarn中文网参考详细教程
1. windows环境下,需要去官网下载yarn软件
yarn下载
2. macOS推荐直接使用brew安装
brew install yarn
- CentOS也是命令安装
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn
安装完后,使用以下命令测试yarn是否安装成功
yarn --version
然后我们就可以使用yarn来安装npm包了,这里贴出常用的一些命令对比。
npm | Yarn |
---|---|
npm install | yarn add |
npm install [package] –save | yarn add [package] |
npm install [package] –save-dev | yarn add [package] –dev |
npm install [package] –global | yarn global add [package] |
npm update –global | yarn global upgrade |
npm rebuild | yarn add –force |
npm uninstall [package] | yarn remove [package] |
npm cache clean | yarn cache clean [package] |
rm -rf node_modules && npm install | yarn upgrade |
npm version major | yarn version –major |
npm version minor | yarn version –minor |
npm version patch | yarn version –patch |
同样的如方案一,yarn可能也需要配合切换镜像源使用。如下可以参考
yarn config get registry # 查看yarn当前镜像源
yarn config set registry https://registry.npm.taobao.org/ # 设置yarn镜像源为淘宝镜像
另外,现在一些大型第三方库也在推荐使用yarn安装依赖库,比如vue,这个可以作为重要的参考。但也不是绝对,因为也有小伙伴反馈用yarn出了问题,但是用npm是正常的。
因为每个人做的项目不同,npm依赖间的关系错综复杂,很多时候还要看点运气,或者你测出了别人没遇到的bug,毕竟,这些底层工具也是代码写的,代码写的就可能有bug,找到自己最适合的工具就好。
方案三:专线链接
如果前两个方案都不太奏效,小编只能推荐一个终极大招了,彻底解决npm卡住不动,npm下载慢,npm安装报错等各种网络问题–科学上网专线直连。为什么是大招,小编你是不是忽悠我?
理由有两个,
- 一是虽然我们用了淘宝镜像源,但是第三方依赖包各种各样,奇葩的是还有的第三方库在下载的时候需要临时去别的网址下载它自己的依赖,而这个它自己的依赖咱们淘宝是没有代理的,或者说即使有的网址可以代理,那么多第三方库的额外网址,你也不可能都能帮你代理下载。最典型的依赖库如
node-sass
、node-gyp
等(node-sass和node-gyp的坑不止一个,这个等小编哪天再出详细教程) - 二是小编之前遇到过这类坑,无论采用cnpm,换镜像源,换yarn,各种删除依赖重新安装,都不行,最后还是采用更科学的方式,才得以节约宝贵的开发时间。毕竟,各种工具要为我们的工作效率服务才行,不然就不是好工具。如果我们为了节省资金,但是耗费了大量的时间研究踩坑而没有结果,那岂不是浪费了更多的资金了,时间比资金更贵。
好了,不卖关子了,明白这类工具的好处的小伙伴,自然明白时间和好工具的重要性,请直接到小编推荐的专业网站操作
排名第一的VPN: Express VPN
专线直连最直接的方案就是购买服务 —
鲁迅(误)
如果对此工具还有疑问的小伙伴,请参考这篇解读欣赏下小编的踩坑辛酸泪。。。