什么是 NPM

Node 包管理器 (npm) 是一个由 Node.js 官方提供的第三方包管理工具,就像 PHP、Pear、Python 的 PyPI 一样。npm 是一个完全由 JavaScript 实现的命令行工具,通过 Node.js 执行,因此严格来讲它不属于 Node.js 的一部分。在最初的版本中,我们需要在安装完 Node.js 以后手动安装 npm。但从 Node.js 0.6 开始,npm 已包含在发行包中了,安装 Node.js 时会自动安装 npm。

NPM 用途

npm 的背后,是基于 couchdb 的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。

NPM 在国内

虽说 npm 很方便,但是在国内由于网络原因,使用 npm 下载一些依赖包的时候,速度还是很慢,甚至有时候还要翻墙,大大影响了我们的开发效率。那么,是否有解决方案呢,答案是有的,那就是淘宝 npm 镜像。

什么是淘宝 NPM 镜像

淘宝的npm镜像是一个完整的 npmjs.org 镜像。你可以用此代替官方版本(只读),同步频率目前为10分钟一次以保证尽量与官方服务同步,官网截图如下。

taonpm官网

淘宝 NPM 镜像安装及使用

安装

  • 可以使用淘宝 npm 镜像定制的cnpm(gzip 压缩支持) 命令行工具代替默认的 npm :
1
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 或者直接通过添加 npm 参数 alias 一个新命令:
1
2
3
4
5
6
7
8
9
10
alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
# Or alias it in .bashrc or .zshrc
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc

使用

  • 安装模块

registry.npm.taobao.org 安装所有模块. 当安装的时候发现安装的模块还没有同步过来, 淘宝 npm 会自动在后台进行同步, 并且会让你从官方 NPM registry.npmjs.org 进行安装. 下次你再安装这个模块的时候, 就会直接从淘宝 npm 安装了。

1
$ cnpm install [name]
  • 同步模块

直接通过 sync 命令马上同步一个模块, 只有 cnpm 命令行才有此功能:

1
$ cnpm sync connect

当然, 你可以直接通过 web 方式来同步: /sync/connect

1
$ open https://npm.taobao.org/sync/connect
  • 其他模块

支持 npm 除了 publish 之外的所有命令, 如:

1
$ cnpm info connect

当然,还可以这样安装和使用

如果你不想用 cnpm ,或许你可以直接修改 npm config配置的 registry ,来使用淘宝 npm 镜像:

安装

1
npm config set registry https://registry.npm.taobao.org

接着 config ls 一下:

1
npm config ls -l

npm config ls

使用

1
$ npm install [name]

好了,现在开发者再一次解放出来(不用担心安装管理包时的速度问题)。