npm 私服以及使用

在工作中,公司有很多内部的包并不希望发布到npm官网仓库,因为可能涉及到一些私有代码不能暴露。对于前端来讲,这时就可以选择在公司内网搭建npm私有仓库。当前比较主流的几种解决方案:verdaccio、nexus、cnpm。大家可以按照自己的需求选择。本文中采用的是verdaccio私服搭建。
Verdaccio是一个通过Node.js创建的企业级npm私有仓库程序,可以安装运行在Windows系统和Linux系统,这里将其安装运行在Linux系统中。

1.准备工作

阿里云服务器:Centos 7
node:15.10.0
npm:10.2.4
这只是我的配置,不一定需要服务器,小伙伴可以安装自己电脑上或者虚拟机上,Verdaccio可以安装运行在Windows系统和Linux系统

2.安装verdaccio

安装verdaccio(加上–unsafe-perm的原因是防止报grywarn权限的错)

npm install -g verdaccio --unsafe-perm 

修改配置文件(config.yaml)

vi /root/.config/verdaccio/config.yaml 

在配置文件末尾最后添加监听端口
listen: 0.0.0.0:4873 // verdaccio 默认端口
还有一种简单的修改配置的方法:
找到verdaccio的安装位置,打开config.yaml 直接修改,如下图
在这里插入图片描述
在这里插入图片描述

3. 启动verdaccio

3.1直接启动

verdaccio 

启动后用ip+端口号就可以打开npm私服的页面
在这里插入图片描述

3.2利用pm2一直守护verdaccio进程

直接使用 verdaccio虽然可以正常启动,但是不能一直保持进程开启,所以我们可以使用pm2来对verdaccio进程进行托管启动

安装pm

npm install -g pm2 --unsafe-perm 

pm2启动verdaccio

pm2 start verdaccio 

查看pm2 守护下的进程

pm2 ls

在这里插入图片描述
pm2常用的几个命令

停止 verdaccio
pm2 stop (对应的id)
pm2 stop 3启动 verdaccio
pm2 start (对应的id)
pm2 start 3# 重启 verdaccio
$ pm2 restart 3# 删除 verdaccio
$ pm2 delete verdaccio# 查看 verdaccio 日志
$ pm2 logs verdaccio

3.3 添加用户

npm adduser --registry http://192.168.XX.XX:4873        //后面是我们的私服地址

会让你输入用户名、密码、邮箱即可
然后可以在页面中登录

4.客户端使用

4.1 设置下载源

在发布和下载npm包之前需要把我们的npm下载源却换成本地的

查看下载源

npm config get

切换下载源

npm  set registry 192.168.xxx.xx:4873 

4.2发布npm包

在切换npm源成功的情况下进行登录和发布,登录使用刚才添加的账号密码,发布成功以后在刚才打开的页面登录账号就能看到发布的插件
在这里插入图片描述

4.3推荐nrm管理npm源

nrm是 npm registry 管理工具, 能够查看(nrm ls)和切换(nrm use xx)当前使用的registry
安装nrm

npm install -g nrm 

添加自己服务器到地址到nrm

nrm add 自己起的名字 http://192.168.xxx.xx:4873 

查看当前有哪些下载源:

nrm ls

在这里插入图片描述
切换想要使用的下载源

nrm use 自己起的名字

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

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

相关文章

GEE遥感云大数据林业应用典型案例实践及GPT模型应用

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

docker安装php7.4安装(swoole)

容器 docker pull centos:centos7 docker run -dit -p9100:9100 --name“dade” --privilegedtrue centos:centos7 /usr/sbin/init 一、安装前库文件和工具准备 1、首先安装 EPEL 源 yum -y install epel-release2.安装 REMI 源 yum -y install http://rpms.remirepo.net/en…

SDWAN专线,解决银行网络搭建痛点

金融行业的不断发展和数字化转型,银行网络的搭建和管理面临着诸多挑战和痛点。SD-WAN(Software-Defined Wide Area Network,软件定义广域网)专线作为一种创新的网络解决方案,为银行解决了诸多网络搭建痛点,…

nextjs中怎么import svg,并且使用

在 Next.js 中,导入 SVG 并使用它的方法与常规 React 项目类似。以下是如何在 Next.js 中导入和使用 SVG 的步骤: 1、放置 SVG 文件 首先,将你的 SVG 文件放置在项目的某个目录中,例如 public/static/images。 2、导入 SVG 你…

Python数据处理实战(0)-常用功能以及操作

系列文章: 0、基本常用功能及其操作(本文操持更新) 1,20G文件,分类,放入不同文件,每个单独处理 2,数据的归类并处理 3,txt文件指定的数据处理并可视化作图 4&#xf…

【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题

摘要 当在uni-app中进行iOS打包时,有时会遇到profile文件与私钥证书不匹配的问题。本文将介绍如何解决这一问题,以及相关的技术细节和操作步骤。 引言 在uni-app开发过程中,iOS打包是一个常见的操作。然而,有时会出现profile文…

git的密钥管理

配置Git中的SSH密钥主要涉及到生成密钥对和将公钥添加到远程仓库(如GitHub)的过程。以下是一个详细的配置步骤: 生成SSH密钥对: 首先,确保你已经安装了Git。 打开终端或命令行界面。 输入命令 ssh-keygen -t ed25519 …

【vue.js】文档解读【day 2】 | 响应式基础

如果阅读有疑问的话,欢迎评论或私信!! 本人会很热心的阐述自己的想法!谢谢!!! 文章目录 响应式基础声明响应式状态(属性)响应式代理 vs 原始值声明方法深层响应性DOM 更新时机有状态方法 响应式…

NineData云原生智能数据管理平台新功能发布|2024年2月版

SQL开发:全功能支持百度云 GaiaDB 介绍:支持通过 SQL 开发所有能力管理 GaiaDB 实例。更多信息,请参见:真香!NineData SQL 开发全面适配 GaiaDB 场景:企业使用 GaiaDB 管理企业数据,需要一个一…

vue2+vite+@vitejs/plugin-vue2可以使用require引用图片资源

很多文章都说vite不能用require,vue3vite确实是这样的,但今天无意间发现vue2vite中是可以使用require引用资源的 vue3搭配vite一般使用的是vitejs/plugin-vue解析vue语法,而vue2使用的则是另一个插件vitejs/plugin-vue2插件解析vue语法 看下…

【Android】位置修改相关

获取位置服务总开关状态 //获取LOCATION_MODE值,但adb状态下无法获取 //0为关闭,1 gps、2 network、3 高精度等 int state Settings.Secure.getInt(mContext.getContentResolver(),Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_HIGH_…

SpringBoot使用MongoTemplate详解

1.pom.xml引入Jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 2.MongoDbHelper封装 /*** MongoDB Operation class* author HyoJung* date …

进程的奥德赛:并发世界中的核心概念与动态管理

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

图神经网络实战(2)——图论基础

图神经网络实战&#xff08;2&#xff09;——图论基础 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图和非加权图1.3 连通图和非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前…

《Effective C++》条款44

将与参数无关的代码抽离templates 存在这样一种类&#xff1a; template<class T,int n> class A { public:...int func(){...cout << n * n << endl;} }; 和这样的两种实例化对象&#xff1a; A<int, 5> a1; a1.func(); A<int, 10> a2; a2.…

力扣hot10---大根堆+双端队列

题目&#xff1a; 大根堆思路&#xff1a; 维护最大值&#xff0c;应该首先想到大根堆。C中对应着priority_queue&#xff0c;这里用pair<int,int>来记录对应的值和在nums中的索引。所以有priority_queue<pair<int,int>> q。在大根堆中&#xff0c;用q.top()…

使用axios结合access_token和refresh_token进行无感刷新

这里利用到的主要是 axios 请求失败的config配置可以记住本次请求的参数&#xff0c;以及利用拦截器&#xff0c;等待刷新完后通过 axios(config) 再次发起请求。 小技巧&#xff1a;将每次请求失败的config和promise的resolve参数存放到数组中&#xff0c;等待刷新token完成再…

【框架学习 | 第一篇】一篇文章读懂MyBatis

文章目录 1.Mybatis介绍1.1Mybatis历史1.2Mybatis特点1.3与其他持久化框架对比1.4对象关系映射——ORM 2.搭建Mybatis2.1引入依赖2.2创建核心配置文件2.3创建表、实体类、mapper接口2.4创建映射文件2.4.1映射文件命名位置规则2.4.2编写映射文件2.4.3修改核心配置文件中映射文件…

vue中v-if和v-for优先级

在Vue中&#xff0c;v-for的优先级高于v-if。这意味着在同一个元素上使用v-if和v-for时&#xff0c;v-for将首先被解析&#xff0c;然后是v-if。 下面是一个代码示例&#xff1a; <template><div><div v-for"item in items" v-if"item.isDispl…

python七大爬虫程序

一&#xff0c;爬取豆瓣电影信息 import random import urllib.request from bs4 import BeautifulSoup import codecs from time import sleepdef main(url, headers):# 发送请求page urllib.request.Request(url, headersheaders)page urllib.request.urlopen(page)conten…