在我们日常的前端开发过程中,npm我们是非常常用的,但是众所周知,npm的服务器位于海外,所以对于我们在国内的使用,速度是非常慢的,这就导致我们在使用默认下载源的时候,下载很慢甚至出现下载失败的情况。
针对这一情况,我们国内的一些互联网大厂也就构建了自己的下载仓库,这个仓库里面的依然是npm源网站的包,只是这个仓库会每隔几秒同步一次数据,将npm的包先缓存到这个仓库中,然后用户直接从国内的仓库下载即可。这样我们去请求国内仓库,速度远比请求国外仓库的速度快。这也就是为什么要会有更换NPM下载源的这个问题。
查看源 首先我们要清楚我们的源指向哪里
查看源:npm config get registry
默认指向的是https://registry.npmjs.org/,也就是官方的源。
更换源 国内源很多,这里我们常用的是淘宝源。毕竟是大公司,也是目前在性能、稳定性等方面比较好的一个。
更换源:npm config set registry registry.npmmirror.com/
注意:一些文章还是写着旧的淘宝NPM镜像registry.npm.taobao.org,但是他已经于2022年05月31日废弃, 现在使用的是新的镜像地址:registry.npmmirror.com源。
使用nrm协助快速更换源 因为换源需要记住域名,很麻烦,还要手打较长的命令,所以我们可以考虑安装nrm包。
安装nrm包:npm i -g nrm
nrm其实就是NPM registry manager,管理NPM源泉的简单命令行工具。
令人悲伤的是,如果使用国外源安装nrm,有时候可能超时而安装失败(多执行几次命令即可)。
通过nrm ls或列出一些可选的公有源:
查看公有源:nrm ls
$ nrm ls
npm ---------- registry.npmjs.org/ yarn --------- registry.yarnpkg.com/ tencent ------ mirrors.cloud.tencent.com/npm/ cnpm --------- r.cnpmjs.org/ taobao ------- registry.npmmirror.com/ npmMirror ---- skimdb.npmjs.com/registry/
通过nrm use <源名称>,则会配置为对应的registry url。
修改源:nrm use 源名称
NPM 全局配置切换到官方源 npm config set registry www.npmjs.org
全局配置切换到淘宝源 npm config set registry
registry.npm.taobao.org // 淘宝源
www.npmjs.org //官方源
检测是否切换到了淘宝源 npm info underscore
// 有 registry.npm.taobao.org 等字样 说明切换成功 tarball: ‘registry.npm.taobao.org/underscore/…
总结:
nrm工具的子命令不只是这些,只是这些命令比较常用。我们也可以在列表中新增自己的源。具体的可以阅读他的文档。
话说他好像有点小bug,作者其实并没有好好维护,曾有一段时间npm升级,nrm没有跟进,导致不能使用,但是后来已经修复好了。