说到换源先说下什么是换源,为什么要换源。
一般对于一个软件有很多不同资源,不同的资源下载的速度有很大差异,就像在迅雷上下载资源一样,有的资源下载速度可以达到10M/s,而有的则只有10K/s,并且到后面根本下载不了。
软件也一样,有很多不同的资源,下载的速度自然有差异。npm相当于一个软件商店,只是上面的软件都是免费。上面的软件当然有不同的资源,下载速度当然有很大差异。npm默认下载地址是国外的,下载速度当然慢。所以npm换源是将npm的资源换成国内的资源地址。
看到这里可能有人说这还不简单,直接全局安装个cnpm模块,
npm install -g cnpm
所有包都用cnpm来安装一路畅通,没错cnpm模块很好用,安装也很快,有很长一段时间我也是用的cnpm,直到有一次安装出现了问题。在绝大多数情况下cnpm是没有问题的,但是以下情况有问题:
1、有些npm包中集成了npm install ,最后都会调用npm install ,这种情况下,cnpm完全无效。
2、有些npm API 相关的package,都会读取.npmrc中的registry,或者使用默认的registry去查询npm package相关信息。
故解决这些问题的根本方法是给npm换源。
国内有一些优秀的npm镜像,比如淘宝镜像,cnpm等。
淘宝npm镜像
cnpmjs镜像
搜索地址:http://cnpmjs.org/
我们只需要将资源地址改为国内镜像就可以。如下:
1、通过 config 配置指向国内镜像源
npm config set registry http://registry.cnpmjs.org // 配置源的指向
npm install express // 安装express
2、通过 npm 命令指定下载源
npm --registry http://registry.cnpmjs.org install express // 配置源并安装express模块
3、在配置文件 .npmrc 文件写入源地址
打开电脑的个人用户目录下的.npmrc文件,没有就新建。
registry=http://registry.cnpmjs.org // 写入这段
前两种方法是临时的改变源,第三种是永久改变源。
对于换源推荐一个npm模块nrm。nrm是一个npm源管理工具,其切换源非常方便。
npm install -g nrm // 全局安装nrm模块
nrm ls // 显示所有可用的源
nrm use taobao // 切换到淘宝源:
特殊:
有些模块即使换了源还是安装非常慢以至于安装失败,比如:node-sass。
在安装node-sass过程中,是要在 GitHub 上下载编译好的 node-sass
二进制包,本来github访问速度就慢,request访问速度更慢。
故需要特殊配置:
在.npmrc文件中加入:
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
// 将node-sass包资源地址指向淘宝镜像
在npm安装有些包时会遇到一些问题,你只需google一下,找到相关配置写到.npmrc文件中。
参考文章: