1.需求由来

由于node安装插件是从国外服务器下载,受网络影响大,速度慢且可能出现异常。所以如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队(阿里巴巴旗下业务阿里云)干了这事。来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

也就是说我们可以使用阿里布置在国内的服务器来进行node安装。

2.使用方法

1.使用阿里定制的 cnpm 命令行工具代替默认的 npm,输入下面代码进行安装:

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

2.检测cnpm版本,如果安装成功可以看到cnpm的基本信息。

cnpm -v

3.以后安装插件只需要使用cnpm intall即可


假如我已经习惯了npm install的安装方式,我不想去下载阿里的cnpm命令工具将命令变成cnpm怎么办?很容易我们想到,我直接将node的仓库地址改成淘宝镜像的仓库地址不就好了吗?

3.单次使用

npm install --registry=https://registry.npm.taobao.org

4.永久使用

设置成全局的下载镜像站点,这样每次install的时候就不用加--registry,默认会从淘宝镜像下载,设置方法如下:

1.打开.npmrc文件(nodejs\node_modules\npm\npmrc,没有的话可以使用git命令行建一个( touch .npmrc),用cmd命令建会报错)
2.增加 registry =https://registry.npm.taobao.org 即可。

也可以按如下方式直接在命令行设置

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

检测是否成功

// 配置后可通过下面方式来验证是否成功
npm config get registry
// 或
npm info express

这样,我们可以使用淘宝镜像还不用更换成cnpm,是不是很爽!虽然实际都是使用的是淘宝镜像。
最后附上淘宝镜像官网地址:http://npm.taobao.org/

注:如果想还原npm仓库地址,只需再把地址配置成npm镜像就可以了

   npm config set registry https://registry.npmjs.org/

5.npm改成淘宝镜像与cnpm区别(20190509新增)

之前一直以为npm改成淘宝镜像后和cnpm本质是一样的,今天在研究package-lock.json时候发现,这两者还是有很大区别。特记录下:

先贴下截图对比:
1.使用cnpm安装lodash

 
 

2.使用改成淘宝仓库的npm安装lodash

 
npm.png

通过截图会发现:

  • cnpm安装模块的时候会在node_modules文件夹生成二个文件夹,一个以下划线 _开头以及版本号组成的名字,一个正常名字的模块,文件夹名字虽然不一样,但里面文件是一样的。
    比如执行cnpm install lodash,会在node_modules文件夹下生成两个文件夹:_lodash@4.17.11@lodash和lodash,

  • 先执行了cnpm install lodash,然后再执行npm install lodash,npm安装的lodash会替换掉cnpm安装的lodash包(包括以下划线开头那个包),文件夹会只剩一个npm先安装的lodash包。再次npm uninstall lodash或者cnpm uninstall lodash,都会删除lodash包,此时插件包就变成空文件夹了。

  • 先执行了cnpm install lodash,然后再执行npm uninstall lodash后,此时会报错

     npm ERR! code EINVALIDPACKAGENAME
    npm ERR! Invalid package name "_lodash@4.17.11@lodash": name cannot start with an underscore;
    name can only contain URL-friendly characters

但是使用cnpm uninstall lodash后,不会报错,此时会删掉cnpm安装的两个包中其中一个即非下划线(正常名字)的包。剩余的那个包是可以正常通过鼠标点击打开的。然后在文件中require会报错,提示没有这个包。

  • 先执行了cnpm install lodash,然后手动删除cnpm安装的两个包中其中一个即下划线(非正常名字)的包,剩余的那个包,发现无法通过鼠标点击打开了。然后在文件中require会报错,提示没有这个包。
 
yinyong.png
  • 所以,cnpm安装的的2个模块,两者应该存在引用关系,正常名字模块是非正常名字模块的索引,两者都必须存在才可以使用。但是npm安装下来就不存在这种情况了,因为只有一个正常名字模块。

  • 实测发现,尽管使用npm改成淘宝仓库,发现安装速度还是远远比cnpm慢(当模块比较多的时候)。可能应该和cnpm安装的文件结构有关系吧。

作者:YINdevelop
链接:https://www.jianshu.com/p/fae87fef8ad0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. 随鼠标轮动翻动层————jquery小练习
  2. 用Python作GIS之一:介入STARS
  3. 自动化测试实施的几个idea
  4. 分享下VellLock源代码。。。VellLock正式开源
  5. java解惑
  6. 如何通过写bat 安装Windows服务,本人亲测成功
  7. locust 参数,数据详解
  8. Retrofit 实现获取往里圆角图片,且传值到另一个页面
  9. 浏览器仿EXCEL表格插件 版本更新 - 智表ZCELL产品V1.3发布
  10. SpringMVC入门学习(二)
  11. laravel的启动过程---摘自网络博客个人学习之用
  12. Java快速开发平台强大的代码生成器,JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布
  13. Linux学习笔记:sed删除、插入数据
  14. ubuntu下Sprak(IDE)wordcount例子
  15. Esper学习之十一:EPL语法(七)
  16. django查询集API
  17. 490 - Rotating Sentences
  18. hud 5124 lines(思维 + 离散化)
  19. .NET中的集合-ArrayList2
  20. Ubuntu上搭建比特币运行环境

热门文章

  1. HTML5 a标签的down属性进行图片下载
  2. 一次JDBC支持表情存储的配置过程
  3. bzoj 4736: 温暖会指引我们前行 (LCT 维护最大生成树)
  4. 免费ip共享库
  5. MySQL中的数据库对象
  6. 进阶Java编程(10)反射与简单Java类
  7. global.css
  8. 【Git的基本操作六】分支管理
  9. day09 并发编程
  10. 阿里云环境中配置tomcat7可能出现的问题及解决方法