自建npm代理

本文介绍了如何使用verdaccio自建npm代理,解决缺少私有registry存储包和公共registry不稳定的问题。verdaccio作为proxy registry,从自身数据库或上行链路下载包。详细阐述了verdaccio的工作逻辑、配置使用方法、为何不选择gitlab和cnpm,以及部署步骤。
摘要由CSDN通过智能技术生成

序言

使用verdaccio自建npm proxy registry是为了解决工作中面临的两个问题。

缺少私有registry来存储包

最近我需要将一些包上传到registry,因为这会减少我迭代时的工作量。可问题在于,涉及到 商业机密 的包是不适合上传到npm这种公共仓库的。例如我正在编写的_生成浏览器指纹_的包,因为它一旦被公开就会失去大部分价值。又例如被应用在前端脚手架内的包,因为它们都是为公司业务逻辑量身打造的。

其他registry不够稳定

在日常工作中有些包总是下载缓慢甚至时常下载失败,即使切换到国内镜像源也是如此。我们除了一遍遍尝试重新安装之外别无他法,若是引起打包过程失败则更是会浪费大量时间。

verdaccio工作逻辑

在了解怎么使用它之前是绝对有必要了解这个工具的逻辑的。或许我们更熟悉的是cnpm,它是将国外npm服务器上所有公开的包缓存一份在自己服务器上。而verdaccio则不同,我们从verdaccio下载包的时候,它会先从我们自己的数据库中查找有没有匹配的包,如果有则从自己服务器下载,如果没有则从上行链路下载,这里的上行链路可以是cnpm也可以是npm或者任意一个registry。这就是proxy registry的含义。

如何使用

下载包

verdaccio是完全兼容yarn和npm的,因此只需要将registry设置成verdaccio即可。不建议将verdaccio设置到全局,推荐下述方式。

在项目根目录下创建名为.npmrc的文件,文件内容如下:

@bhkk:registry=https://xxx.xxxxx.com/

接下来就可以用yarn或者npm来装包了。

上传包

首先登陆verdaccio,在控制台执行下述指令:

#用户名,密码和npm一致即可,邮箱任意。
npm adduser --registry https://xxx.xxxxx.com/ 

接着就可以使用下述指令上传包了。

npm publish --registry https://xxx.xxxxx.com/

为什么不

为什么不使用gitlab?

gitlab只能通过分支来区分版本,而切换分支显然远远不如yarn add xx@^xx.xx方便。

安装包的过程也十分繁琐。要想安装某个包,就必须先去拿到这个包的仓库地址,然后输入指令clone它,最后还要自己区分最新版本的分支并切换过去。而我认为不应该把精力浪费在这些地方。

为什么不使用cnpm?

阿里的cnpm并不符合我的需求。我们需要的并不是自己维护一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值