npm 与 nrm

前言

佛祖保佑, 永无bug。Hello 大家好!我是海的对岸!

本文的写作背景是,在使用 npm发包中,碰到的问题,进而引出 nrm 这个东西

背景

各位前端coder 在工作中,往往都或多或少会有自己封装过组件。

初级玩法:coder自己把组件封装好了,然后下个项目要用了,就找到之前项目中的这个自己封装好的组件,然后 ctrl + c, ctrl + v, 拷贝过来接着用。

中级玩法:有时候随着工作年限的增加,经手的项目越来越多,不知道自己这个项目用到的组件,到底放哪了,找起来,比较费劲,就自己找个地方,暂存一下,下次要用,就去暂存那里去拿下(我目前是把工作中用到的组件,放在了笔记,博客中)

高级玩法:把组件做成包,自己发布到 npm中,如果是公司内部的项目,那就发布到公司自己搭的私有npm服务器中(私有 npm服务器 不在本文讨论范围内,暂不展开)

npm 发包简单快速介

本人在使用npm发布的时候,前前后后折腾了好久,在此过程中发现了nrm这个好东西

发包的命令其实很简单就2步两条指令

你把你要发布的包准备好之后

  1. 在cmd终端输入 npm login, 进行登录
  2. 登录成功之后,然后进入你要发布的包的路径中,输入 npm publish

嗯,就这么简单,其实在 npm login 这里也有坑,但本文的重点是nrm, npm login 这里后续再写一篇文章

正文

因为最后要发包到 npm官网上,npm的官网是

js 复制代码
https://registry.npmjs.org/

但是我们平时开发的时候,使用的是npm的镜像网站,因为npm官网在国外,下载很慢

所以如果自己要发包的话,需要再次把我们之前的镜像网站,再设置成 npm的官方网站

js 复制代码
查看npm的配置
npm config list

设置官方源
npm config set registry https://registry.npmjs.org/

设置国内镜像源
npm config set registry http://registry.npmmirror.com/

我们如果手动操作的话,那就要在平常开发的时候,手动执行下 npm config set registry http://registry.npmmirror.com/ 命令,在要发包的时候,再手动执行下 npm config set registry https://registry.npmjs.org/, 是不是很繁琐。

那么 nrm是干嘛的,nrm 全名是npm registry manager, 即npm的镜像源管理工具。我们大多数人应该在使用npm时,使用过淘宝镜像来进行npm包的安装,但当有多个源时,切换并不方便,这时就可以使用nrm来管理镜像源。

  • 安装 nrm
js 复制代码
npm install nrm -g
  • 查看可选的源
js 复制代码
nrm ls

由下图可知,nrm内置了6个源,带*的表示当前使用的源

嗯,在图上没看到带有 * 号的,是因为我们刚刚才装上 nrm, 我们之前使用的npm镜像源,是我们手动 配置的

  • 使用current命令,可以查看当前使用的源
js 复制代码
nrm current

这个就是我们之前,在没使用 nrm的时候,自己通过 npm config set registry http://registry.npmmirror.com/ 命令自己手动设置的

  • 切换源 use 命令,在nrm ls中,我们发现 淘宝的镜像源已经在nrm内置中了,我们就直接使用 nrm里面的淘宝镜像源
js 复制代码
切换到淘宝镜像源
nrm use taobao

嗯嗯,这下 * 号出来了

nrm 还可以添加自己定义镜像源,比如公司内部的镜像源,也可以添加到 nrm中 进行管理,讲 nrm的 添加自定义镜像源的时候,可以顺带 讲 nrm的 测试镜像源的响应时间nrm删除自定义镜像源

js 复制代码
添加自定义的源
nrm add registry_name http://url...
举个栗子,比如 
nrm add taobao222  http://registry.npmmirror.com/

测试源
nrm test registry_name
举个栗子,比如
nrm test taobao222

删除源
nrm del registry_name
举个栗子,比如
nrm del taobao222
相关推荐
kyriewen5 分钟前
我花3天抓了一个幽灵bug,凶手藏在第4层
前端·javascript·程序员
IT_陈寒41 分钟前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
wangchunyu1141 小时前
JavaScript 零基础入门教程
前端
hanchenxing1 小时前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
默_笙2 小时前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
小羊没烦恼!2 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
码上成长3 小时前
Mapbox 围栏编辑踩过的几个坑:key 串了、形状炸了、icon 挡住绿点
前端·前端框架
SGAMERrain3 小时前
做了一个免费的在线绘画网格工具 DrawGrid,聊聊一个小工具是怎么越做越完整的
前端
我家猫叫佩奇3 小时前
🦭 厌倦了千篇一律的线性图标?Naive Icons 正式开源
前端·javascript·css