Contents
  1. 1. 淘宝npm镜像

淘宝npm镜像

@(博客)[npm, npminstall, cnpm, 加速]

之前用npm安装package实在是太慢了,网上找了
方法:https://npm.taobao.org/ 这是淘宝npm镜像。使用说明:
可以使用定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
然后你就可以用cnpm来代替npm了。
如:npm install -g vue-cli可以改成:cnpm install -g vue-cli

但问题来了。由于cnpm直接从淘宝服务器把package下载下来,是一些.0.0.0xxx.0.0.1xxx的目录,然后会有一些快捷方式目录,打开这些快捷方式(如gulp),进去之后会是对应的如.0.0.1@gulp的文件夹,为什么会这样?如图:
version_pkgmodule_soft_dir

先抛开这个问题,cnpm install moduleName实际上是从淘宝服务器直接下载下来的。实际上还有另外一种npm加速的方法:npm install moduleName --registry=https://registry.npm.taobao.org,但是这种方法不是直接从淘宝服务器下载下来的,moduleName还是从npm服务器下载的,只不过下载的时候是通过了淘宝的加速。这种方法下载下来的文件目录就和直接用npm install moduleName的目录是一样的。

回到刚刚那个问题,为什么从淘宝服务下载是一个.0.0.1xxx的目录?这有什么区别吗?听说存在淘宝服务器的package有被改动的嫌疑?

带着疑问,Google了一下。发现npmcnpm的区别。npm的安装策略与cnpm的安装策略不一样。npm安装之后的目录是树型结构的,是一个树的结构。而cnpm它采用的是npminstall安装策略,npminstall的目的是Make 'npm install' fast and easy.。用npminstall策略安装出来的目录就如上图所示,是一堆型如.0.0.1@vue的目录,而当你打开软链目录的时候,会链接到相应的verison@pkg那里,就像指针一样,每个软链目录指向对应的verison@pkg目录。

以上是我的理解,不足之处,恳请指出~

参考:
https://segmentfault.com/q/1010000006950697/a-1020000006955968
http://cnodejs.org/topic/5753bd312420978970d4a629

Contents
  1. 1. 淘宝npm镜像