npm更换成淘宝镜像源及cnpm使用

news/2024/11/17 12:44:45/

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 

以后安装插件只需要使用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区别

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

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

 

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

 

通过截图会发现:

区别:

  • 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会报错,提示没有这个包。

 

结论:

  • cnpm安装的的2个模块,两者应该存在引用关系,正常名字模块是非正常名字模块的索引,两者都必须存在才可以使用。但是npm安装下来就不存在这种情况了,因为只有一个正常名字模块。
  • 通过实测发现,尽管使用npm改成淘宝仓库,发现安装速度还是远远比cnpm慢(当模块比较多的时候)。可能应该和cnpm安装的文件结构有关系吧。

 

 


http://www.ppmy.cn/news/89548.html

相关文章

玩转ChatGPT:Auto-GPT项目部署与测评

一、Auto-GPT简介 最近,以ChatGPT为代表的超大规模语言模型火出了圈,各种二次开发项目也是层出不穷。 这周在AI圈炸街的是Auto-ChatGPT,在GitHub上已经61.4K的点赞了。 项目地址:https://github.com/Torantulino/Auto-GPT 用项…

在四维轻云地理空间数据在线管理平台中如何上传、查看及分享数据?

四维轻云是一款地理空间数据在线管理平台,具有地理空间数据的在线管理、展示及分享等功能。在四维轻云平台中,用户可以不受时间地点的限制,随时随地在线浏览激光点云、倾斜摄影模型、正射影像、数字高程模型等地理空间数据。 现在&#xff0…

1929-2022年全球站点的逐月平均气温数据

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

[中间件漏洞]nginx漏洞复现

目录 文件解析漏洞 原理分析 复现过程 防御方法 目录遍历漏洞 原理分析 复现过程 防御方法 空字节代码执行漏洞 复现过程 防御方法 整数溢出漏洞(CVE-2017-7529) 复现过程 防御方法 文件名逻辑漏洞(CVE-2013-4547) 复现过程 防…

代码实战深度理解RabbitMQ 5 种消息模型

5种消息模式 简单消息模式:1个生产者 1个队列 1个消费者;生产者只负责生产,消费者只负责消费,两者在同一个队列中操作工作队列消息模式:1个生产者 1个队列 多个消费者; 一条消息只能被消费一次订阅消息…

vue-cli4+vant+rem+sass+vuex+axios封装+webpack搭建前端项目

移动端项目模板 基于 vue-cli4.0 webpack 4 vant ui sass rem 适配方案axios 封装,构建手机端模板脚手架 启动项目 git clone https://github.com/teach-tian/h5-vue-cli4.gitcd h5-vue-cli4npm installnpm run serve✅ 配置多环境变量 package.json 里的 s…

SSM 如何使用 Redis 实现缓存?

SSM 如何使用 Redis 实现缓存? Redis 是一个高性能的非关系型数据库,它支持多种数据结构和多种操作,可以用于缓存、队列、计数器等场景。在 SSM(Spring Spring MVC MyBatis)开发中,Redis 可以用来实现数…

左值、右值、左值引用、右值引用、引用折叠、完美转发

右值&&左值 c11增加了一个新的类型,右值引用,记作:&& 左值是指在内存中有明确的地址,我们可以找到这块地址的数据(可取地址) 右值是只提供数据,无法找到地址(不可…