由于众所周知的原因,我们的内网链接互联网时非常不稳定,速度慢而且经常下载失败。为了提高下载安装 npm 包的体验,很多人都会把 npm 的 registry 配置成国内镜像,我们一般用的比较多的就是淘宝镜像。

镜像是一种存储的形式。一个磁盘上的东西,在另一个磁盘拷贝一份一摸一样的副本,这就是镜像。

淘宝镜像是 npm 官方服务器的同步版本,所以我们从淘宝镜像获取的 npm 包等同于从官方获取 npm 包。这样做的好处是淘宝镜像也在内网,所以稳定且速度快。淘宝镜像地址: https://npm.taobao.org/

1. 配置 registry 为淘宝镜像

首先查看配置信息:

$ npm config ls

注意输出信息中,有一条 metrics-registry ,默认是指向 npm 官方地址:

> metrics-registry = "https://registry.npmjs.org/"

我们可以使用命令把他改成淘宝镜像地址

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

修改完成再输入命令查看配置文件,会发现 metrics-registry 已经发生了修改。

$ npm config ls
> metrics-registry = "https://registry.npm.taobao.org/"

这样,我们就修改完成了,之后使用 npm 命令下载包,将会从淘宝镜像开始下载,稳定且速度快。

2. CNPM

cnpm 是一个维护私有 npm 的解决方案,淘宝就是使用了 cnpm 搭建了一个属于内网的 npm 镜像。

可以安装 cnpm ,然后使用 cnpm 命令来下载安装淘宝镜像上的 npm 包,而不必修改 npm 的 register。

cnpm 的命令基本和 npm 差不多,所有使用起来很方便。

2.1 安装 cnpm

建议全局安装

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

2.2 使用 cnpm

cnpm 命令和 npm 差不多,就像 npm 一样使用。

$ cnpm install webpack 

或者

$ npx cnpm install webpack

3. 使用 nrm 管理 registry (推荐)

nrm 是 NPM registry manager(NPM注册管理器)的缩写,可以更简单、快捷的管理 registry。

nrm 本身并不是装包工具,nrm 是维护了几个常用的 npm 的 registry 地址,方便我们简单、快捷地切换。

3.1 安装 nrm

nrm 建议全局安装

$ npm install nrm -g

3.2 展示 nrm 维护的所有 registry

安装完成后,输入查看命令

$ nrm ls

如果直接运行 nrm 命令提示报错的话,可以尝试下面的命令,如果仍旧无法解决,可以查看报错信息来找到解决方案

$ npx nrm ls 

查看数据结果,可以看到 nrm 帮我们维护了 npm yarn cnpm taobao nj npmMirror edunpm 这个7个环境,前面的 * (星号) 表示当前正在使用的环境。

>
npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
* taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/

如果输入 npm config ls 命令查看 metrics-registry 就会得到相同的结果。

$ npm config ls
> metrics-registry = "https://registry.npm.taobao.org/"

3.3 改变 npm 的 registry

使用 use 命令,如下:

$ npx nrm use [name]

[name] 必须得是,刚才 nrm 维护的 registry ,也就是 nrm ls 命令展示的那7个 registry 其中之一。

例如将 npm 的 registry 再改回官方地址:

$ npx nrm use npm
> Registry has been set to: https://registry.npmjs.org/

可以看到输入命令之后,会提示 “Registry 已经被注册为 ***” 的提示语。

然后查看 npm 的配置信息:

$ npm config ls 

并且查看 nrm 的 registry 列表,发现星号也移动到了 npm 这一行:

$ npx nrm ls
>
* npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/

同样,如果想使用 nrmregistry 改为淘宝镜像,如下:

$ npx nrm use taobao
> Registry has been set to: https://registry.npm.taobao.org/

参考: https://github.com/Pana/nrm

npm 配置 registry 以及使用 nrm的更多相关文章

  1. 设置npm的registry

    .原npm地址 npm config set registry http://registry.npmjs.org .设置国内镜像 a.通过config命令 npm config set regist ...

  2. 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、Git/SVN)

    一. 各类概念和指令介绍 1. NVM (1).  全称:Node Version Manager,是一款针对Nodejs的版本管理工具,由于Node的版本很多,很多时候我要需要依赖多个版本,并且要求 ...

  3. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  4. npm配置镜像及nrm使用

    ​ 淘宝npm镜像 搜索地址:http://npm.taobao.org/ registry地址:http://registry.npm.taobao.org/ cnpmjs镜像 搜索地址:http: ...

  5. npm配置镜像、设置代理

    配置镜像 by config command npm config set registry http://registry.cnpmjs.orgnpm info underscore (如果上面配置 ...

  6. npm配置国内镜像资源+淘宝镜像

    将npm的注册表源设置为国内的镜像 1.国内用户,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度 2.国内优秀npm镜像推荐及使用:http://riny.net/2014/cnpm/ ...

  7. NPM 源的管理器nrm

    作为一个 NPM 源管理器,nrm允许快速地在如下 NPM 源间切换: 列表项目 npm cnpm strongloop enropean australia nodejitsu taobao Ins ...

  8. 解决npm安装模块时 npm err! registry error parsing json

    最近还真是点背,从yeoman生成一个react项目或是github上克隆一个项目,在npm install的时候, 一直报npm err! registry error parsing json(就 ...

  9. 2、Vue实战-配置篇-npm配置

    引言: 如果刚开始使用 vue 并不了解 nodejs.npm 相关知识可以看我上一篇的实践,快速入门了解实战知识树. Vue实战-入门篇 上篇反思: 1.新的关注点:开发 vue 模板.如何使用本地 ...

随机推荐

  1. 【UE4 C++】 SaveGame 存档/读档

    创建 SaveGame 类 继承自 USaveGame UCLASS() class TIPS_API USimpleSaveGame : public USaveGame { GENERATED_B ...

  2. 【UE4 C++】 UDataAsset、UPrimaryDataAsset 的简单使用

    UDataAsset 简介 用来存储数据,每一个DataAsset 都是一份数据 可以派生,系统自带派生 UPrimaryDataAsset 方便数据对象的加载和释放 可以引用其他的 UDataAss ...

  3. airtext初始化(一)

  4. [no_code][Beta]发布声明报告

    $( "#cnblogs_post_body" ).catalog() 软件下载 一个全新的超简易的OCR表单识别工具 轻松拍照,实现手写表格识别 一键打开,支持多种应用打开你的表 ...

  5. Canal Server发送binlog消息到Kafka消息队列中

    Canal Server发送binlog消息到Kafka消息队列中 一.背景 二.需要修改的地方 1.canal.properties 配置文件修改 1.修改canal.serverMode的值 2. ...

  6. webpack基础以及webpack中babel的配置

    webpack 安装 npm 初始化,控制台输入 npm init -y webpack 安装 npm i webpack webpack-cli -D 新建 webpack.config.js co ...

  7. [NOIP模拟46]鼠树

    神仙题. 首先不考虑把黑点变白,发现每个白点的信息与它的归属点是相同的.可以在线段树中只维护黑点的信息,再记录$DFS$序上每个点之前黑点个数的前缀和,每次操作可以二分出该点的归属点进行操作. 具体维 ...

  8. Spring的Ioc与DI

    一.前言 Spring框架的核心基于控制反转的原理. IoC是一种将组件依赖关系的创建和管理外部化的技术. 考虑一个示例,其中Foo类依赖于Bar类的实例来执行某种处理. 传统上,Foo使用new运算 ...

  9. 求树的直径【两遍BFS】

    两遍BFS.从任意一个点出发,第一遍可以找到直径的一端,从这端出发即可找到另外一端. 证明:从U点出发,到达V[画个图便清晰了] 1.如果U在直径上,则V一定是直径的一个端点. 2.如果U不在直径上. ...

  10. PHP怎样写延时队列(定时器)

    背景 PHP没有定时器,依托的都是crontab这样的系统工具,也没有go中defer这样的延时方法,本文介绍几种PHP写延时队列的几种姿势. 延时队列的定义 普通的队列是先进先出,但是延时队列并不是 ...