换源NPM为国内镜像CNPM

来源:互联网 发布:substring sql 编辑:程序博客网 时间:2024/05/18 03:10

为什么要换源? npm 官方站点 http://www.npmjs.org/ 并没有被墙,但是下载第三方依赖包的速度让人着急啊!
就拿阿里云环境来说,有时 npm 一个包也需要耐心等待......等待过去也许是原地踏步,也许就是安装失败.
幸运的是,国内有几个镜像站点可以供我们使用

  • http://www.cnpmjs.org/
  • https://npm.taobao.org/

速度非常快,镜像站会实时更新,为我们节省了好多时间.如何给本机换源呢?
(1)[临时]通过 config 配置指向国内镜像源

# 配置指向源# cnpmjs.org$ npm config set registry http://registry.cnpmjs.org# npm.taobao.org$ npm config set registry http://registry.npm.taobao.org

(2)[临时]通过 npm 命令指定下载源

# 在安装时候临时指定$ npm --registry http://registry.cnpmjs.org info express

(3)[linux]在配置文件 ~/.npmrc 文件写入源地址

//打开配置文件nano ~/.npmrc//写入配置文件registry =https://registry.npm.taobao.org

推荐使用最后一种方法,一劳永逸,前面2钟方法都是临时改变包下载源.
如果你不想使用国内镜像站点,只需要将 写入 ~/.npmrc 的配置内容删除即可.
下面是我本地下载ejs包的截图,可以看到默认源地址指向了 cnpm
(4) 使用 cnpm 来替代 npm

npm install -g cnpm --registry=http://registry.npm.taobao.org

或者 (linux 专用)

alias cnpm="npm --registry=http://registry.npm.taobao.org \--cache=$HOME/.npm/.cache/cnpm \--disturl=http://registry.npm.taobao.org/mirrors/node \--userconfig=$HOME/.cnpmrc"#Or alias it in .bashrc or .zshrc$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=http://registry.npm.taobao.org \  --cache=$HOME/.npm/.cache/cnpm \  --disturl=http://registry.npm.taobao.org/mirrors/node \  --userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc

通过 cnpm 命令行, 你可以快速同步任意模块:

cnpm sync koa connect mocha

呃, 我就是不想安装 cnpm cli 怎么办? 哈哈, 早就想到你会这么懒了, 于是我们还有一个 web 页面:
例如我想马上同步 koa, 直接打开浏览器: http://npm.taobao.org/sync/koa
或者你是命令行控, 通过 open 命令打开:

open http://npm.taobao.org/sync/koa

如果你安装的模块依赖了 C++ 模块, 需要编译, 肯定会通过 node-gyp 来编译, node-gyp 在第一次编译的时候, 需要依赖 node 源代码, 于是又会去 node dist 下载, 于是大家又会吐槽, 怎么 npm 安装这么慢...
好吧, 于是又要提到 --disturl参数, 通过中国镜像来下载:

npm install microtime \  --registry=http://registry.npm.taobao.org \  --disturl=http://npm.taobao.org/mirrors/node

再次要提到 cnpm cli, 它已经默认将 --registry  --disturl 都配置好了, 谁用谁知道 . 写到这里, 就更快疑惑那些不想安装 cnpm cli 又吐槽 npm 慢的同学是基于什么考虑不在本地安装一个 cnpm 呢?

nodejs 源码路径
对于在淘宝上下载nodejs 源码指定的地址是: https://npm.taobao.org/dist

直接更改源文件中的配置文件地址来更改加载路径
~/node_modules/npm/lib/config/defaults.js 
Line : 181 
registry : "https://registry.npmjs.org/"
将这个注册地址 更改为: https://registry.npm.taobao.org/