Node私库Verdaccio使用记录,包的构建,推送和拉取

Node私库Verdaccio使用记录,包的构建,推送和拉取

Verdaccio是一个轻量级的私有npm代理注册中心,它可以帮助你在本地搭建一个npm仓库,非常适合企业内部使用。通过使用Verdaccio,你可以控制和缓存依赖包,提高安装效率,并保证项目依赖的安全性和可靠性。下面我们将详细介绍如何使用Verdaccio进行包的构建、推送和拉取。

安装和配置Verdaccio

具体可以参考文章:ubuntu搭建node私库Verdaccio

创建Vue 3项目作为示例

首先,你需要安装最新版本的Node.js和npm。安装好之后,我们可以使用Vue CLI来创建一个新的Vue 3项目。以下是创建新项目的步骤:

  1. 安装Vue CLI:

    npm install -g @vue/cli
    
  2. 创建一个新的Vue 3项目:

    npm create vue@latest
    
  3. 进入项目文件夹,修改或添加必要的文件以准备将其发布为npm包。你可能需要更新package.json文件,添加如main字段指定入口文件,version字段定义包版本等。

推送包到Verdaccio

要将包推送到本地的Verdaccio服务器,你需要确保你已经正确设置了npm的发布配置。这通常包括以下几步:

  1. 配置npm以使用Verdaccio:

    npm set registry http://localhost:4873
    

    确保Verdaccio服务正在运行并且可以访问。

  2. 登录到你的Verdaccio服务:

    npm login --registry http://localhost:4873
    

    输入你的用户名、密码和邮箱地址。

  3. 发布包:

    npm publish
    

确保你的package.json中的版本号是新的,否则你需要更新版本号才能再次发布。

推送成功后,可以在Verdaccio WEB页面看到刚刚推送的包

在这里插入图片描述

从Verdaccio拉取包

配置npm或yarn以从你的Verdaccio服务器拉取包非常简单。你需要修改npm或yarn的配置,使其指向你的Verdaccio仓库:

  1. 为npm或yarn设置registry:
    npm config set registry http://localhost:4873
    

或者,你可以在项目的package.json中添加或修改publishConfig字段:

"publishConfig": {"registry": "http://localhost:4873"
}

这样,当你使用npm或yarn安装依赖时,它将首先尝试从你的私有仓库中拉取依赖。

npm install命令指定私库拉取包

在特定项目中,如果你只想从Verdaccio拉取特定的包而不是所有包,你可以在安装命令中指定registry参数。这可以用于在项目中测试或使用特定版本的包,而不影响全局npm配置。以下是如何进行设置的示例:

npm install <package-name> --registry http://localhost:4873

使用这个命令,npm将仅对指定的包使用你的Verdaccio服务器,其他包将使用默认或全局配置的registry。这种方法对于在不同源之间切换特定包非常有用,特别是在开发和测试新版本的包时。

这样,你可以灵活地管理你的依赖源,确保开发环境的稳定性和项目的灵活性。

在这里插入图片描述

package-name在包详情的installation中可以看到。

常见问题及解决方案

推送包到Verdaccio时报错

报错内容如下:

npm notice Publishing to http://localhost:4873/ with tag latest and default access
npm ERR! code EPUBLISHCONFLICT
npm ERR! publish fail Cannot publish over existing version.
npm ERR! publish fail Update the 'version' field in package.json and try again.
npm ERR! publish fail
npm ERR! publish fail To automatically increment version numbers, see:
npm ERR! publish fail     npm help versionnpm ERR! A complete log of this run can be found in:
npm ERR!     

遇到的错误提示是 EPUBLISHCONFLICT,这意味着试图发布的npm包的版本号已经存在于私有库中,因此无法再次使用相同的版本号进行发布。这是为了防止覆盖已经发布的版本造成潜在的问题。要解决这个问题,可以按照以下步骤操作:

1. 更新版本号

在你的package.json文件中,找到version字段,并更新它。常见的版本号遵循语义化版本控制规则,格式通常为主版本号.次版本号.修订号(例如,1.0.0)。

  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号:当你做了向下兼容的问题修正。

你可以根据你的更改适当地增加这些数字。例如,如果你修复了一个小bug,可以增加修订号:

"version": "1.0.1"

2. 自动更新版本号

如果你希望自动更新版本号,可以使用npm的version命令,这会根据需要自动增加版本号,并修改package.json文件,同时还会创建一个版本提交(如果你的项目是一个git仓库):

npm version patch  # 小修小改,如修复bug
npm version minor  # 新功能但不影响老功能
npm version major  # 大改,可能影响现有功能

选择patchminormajor取决于你的更新内容。

3. 重新发布

更新版本号后,你可以尝试重新发布你的包:

npm publish

参考链接

  • Verdaccio官网:https://verdaccio.org/
  • npm官方文档:https://docs.npmjs.com/
  • yarn官方文档:https://classic.yarnpkg.com/en/docs

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边OTG边充电芯片LDR6500

随着科技的飞速发展&#xff0c;智能移动设备已成为我们生活中不可或缺的一部分。而在这些设备的连接与数据传输中&#xff0c;Type-C接口以其高效、便捷的特性逐渐占据了主导地位。OTG&#xff08;On-The-Go&#xff09;技术则进一步扩展了Type-C接口的功能&#xff0c;使得设…

构建安全高效的数字货币钱包:开发指南

在加密货币领域的蓬勃发展中&#xff0c;数字货币钱包成为了连接用户与区块链的重要桥梁。作为存储、发送和接收加密资产的工具&#xff0c;数字货币钱包的安全性和效率至关重要。本文将介绍如何构建一个安全高效的数字货币钱包&#xff0c;并提供开发指南&#xff0c;帮助开发…

2024中国(江西)国际先进陶瓷材料及智能装备博览会

2024中国&#xff08;江西&#xff09;国际先进陶瓷材料及智能装备博览会 “中国&#xff08;江西&#xff09;国际先进陶瓷材料及智能装备博览会” 陶瓷三新展 &#xff08;新材料、新装备、新技术&#xff09; 绿色智能、引领未来 2024年11月1日-11月3日 中国江西 南昌…

深度学习系列64:数字人wav2lip详解

1. 整体流程 第一步&#xff0c;加载视频/图片和音频/tts。用melspectrogram将wav文件拆分成mel_chunks。 第二步&#xff0c;调用face_detect模型&#xff0c;给出人脸检测结果&#xff08;可以改造成从文件中读取&#xff09;&#xff0c;包装成4个数组batch&#xff1a;img…

html显示PDF并兼容IE浏览器的解决方案

方案一、vue-pdf插件 缺点&#xff1a;IE11显示空白&#xff0c;编译后的Edge测试环境可以正常线上&#xff0c;打到线上报错&#xff0c;谷歌和百分浏览器显示完美 1、vue 只显示核心代码&#xff0c;需要安装vue-pdf插件 <vue-pdf :src"ivcPdfUrl"></v…

Spring声明式事务(@Transactional)原理之-ProxyTransactionManagementConfiguration

文章目录 目录 文章目录 前言 一、切入点以及切面的匹配规则 1.1 TransactionAttributeSourcePointcut事务的切入点匹配 二、TransactionInterceptor切面的具体逻辑 2.1 声明式事务实现的具体逻辑 总结 前言 上一篇文章已经说过了声明式事务的原理其实就是SpringAop动态…

C语言基础:初识指针(二)

当你不知道指针变量初始化什么时&#xff0c;可以初始化为空指针 int *pNULL; 我们看NULL的定义&#xff0c;可以看出NULL是0被强制转化为Void* 类型的0&#xff1b;实质还是个0&#xff1b; 如何避免野指针&#xff1a; 1. 指针初始化 2. 小心指针越界 3. 指针指向空间…

2024五一杯ABC题资料合集+代码+参考论文!!!

一.赛题思路 (赛题出来以后第一时间在群内分享) 二.比赛日期和时间 比赛开始时间:2024年5月1日(周三)10;00 比赛结束时间:2024年5月4日(周六&#xff09;12:00 三.将在明天分享的资料合集如下 4.我们这边会分享22年的题目完整全部的过程 5.数学建模的29个通用模型及MATLAB…

Python网络数据抓取(3):Beautiful Soup

Beautiful Soup 这个库通常被称为Beautiful Soup 4&#xff08;BS4&#xff09;。它主要用来从HTML或XML文件中抓取数据。此外&#xff0c;它也用于查询和修改HTML或XML文档中的数据。 现在&#xff0c;让我们来了解如何使用Beautiful Soup 4。我们将采用上一节中使用的HTML数据…

实验室温湿度设备巡检的意义

温湿度监控设备的正常运行对于实验室的科研工作来说至关重要&#xff0c;然而&#xff0c;我们常常会遇到设备出现故障或者探头不灵敏的情况&#xff0c;这给实验室的工作带来了诸多困扰&#xff0c;为了解决这些问题&#xff0c;对实验室温湿度设备进行巡检管理也是一种非常有…

前端vue如何生成二维码

有时候有需要链接直接生成二维码在手机上看的需求&#xff0c;比如下载&#xff0c;比如信息&#xff0c;比如excel 下面先引入包 import QRCode from qrcode; 然后上代码 // 将res转换成二维码const qrCodeData JSON.stringify(res); // 将res转换为字符串作为二维码数据// …

数据结构 -- 双向链表

谁说我没有死过? 出生以前, 太阳已无数次起落. 悠久的时光被悠久的虚无吞没, 又以我生日的名义卷土重来. --史铁生 目录 1. 前言2. 双向链表的结构3. 双向链表的实现4. 完整代码5. 总结 正文开始 1. 前言 双向链表是一种常见的数据结构&#xff0c;它与单向链表相比&#x…

MacPro(M1,M2芯片)Java开发和常用工具开源软件合集

目录 Java开发软件1 IDE1.1 idea1.2 Vs Code 2 开发工具2.1 数据库数据库模型管理数据库连接客户端 2.2 SSH/Telnet/Serial/Shell/Sftp客户端2.3 MarkDown编辑器2.3 代码片段管理粘贴 3小工具3.1 截图贴图3.2 Mac下修改hosts文件的图形化界面软件 Java开发软件 1 IDE 1.1 ide…

如果把软路由的网段更换成169.254.0.0/16会咋样?

前言 这几天有小伙伴在折腾软路由系统&#xff0c;然后问题就来了。 他咨询的是&#xff1a;为啥电脑连接软路由之后&#xff0c;无法访问软路由的管理页&#xff1f; 嗯。。。确实不是什么大事。但不注意看&#xff0c;还以为软路由没有正常获取到ip。 熟悉网络的小伙伴们都…

实例解释:溢出和进位是咋回事?不能胡来吧!

有学生给我一段程序&#xff0c;就在运行中标志位的“怪异”表现提出问题。   程序不难懂&#xff1a; assume cs:codesg codesg segment start:mov al,0fchadd al,05h ;结果不溢出mov al,0f5hadd al,87h ;结果溢出mov ax,4c00hint 21h codesg ends end start难懂的是&a…

leetcode-有效括号序列-94

题目要求 思路 1.使用栈的先进后出的思路&#xff0c;存储前括号&#xff0c;如果st中有对应的后括号与之匹配就说明没问题 2.有两个特殊情况就是字符串第一个就是后括号&#xff0c;这个情况本身就是不匹配的&#xff0c;还有一种是前面的n个字符串本身是匹配的&#xff0c;这…

与Apollo共创生态:我们携手远航

目录 小程一言会议记录 回望7年发展展望未来小程有感 小程一言 4月22日&#xff0c;百度Apollo在北京车展前夕举办了以“破晓•拥抱智变时刻”为主题的智能汽车产品发布会。我在观看后也是很是触动 作为在校大学生的我&#xff0c;从大一开始知道Apollo开始&#xff0c;Apollo…

高并发实现高效内存管理

高并发下传统方式的弊端 void *malloc(size_t size);在内存的动态存储区中分配一块长度为size字节的连续区域返回该区域的首地址. void *calloc(size_t nmemb, size_t size);与malloc相似&#xff0c;参数size为申请地址的单位元素长度&#xff0c;nmemb为元素个数&#xff0…

软考高级 | 系统架构设计师笔记(一)

一. 系统规划 1.1 项目的提出与选择 该步骤生成” 产品/项目建议书”. 1.2 可行性研究与效益分析 包括经济可行性/技术可行性/法律可行性/执行可行性/方案选择 5 个部分. 该步骤生 成”可行性研究报告”. 1.3 方案的制订和改进 包括确定软件架构/确定关键性要素?/确定计算…

Python 自定义日志输出

Python 有着内置的日志输出模块&#xff1a;logging 使用也很方便&#xff0c;但我们今天不说这个&#xff0c;我们用文件读写模块&#xff0c;实现自己的日志输出模块&#xff1b;这样在项目中&#xff0c;可以存在更高的自由度及更高的扩展性&#xff1b; 先来看看日志输出…