npm私服 verdaccio 搭建
1、什么是npm 私服
我们前端(web,nodejs)平常使用的各种包,什么vue,react,react-router, zustand等,都会从 https://registry.npmjs.org/ 这个镜像源上download, 当然我们国内开发为了download 方便,快速down下来,下载包的时候会指定国内镜像源,比如淘宝镜像。像这些提供给全网使用的镜像服务,就是公共服务了。
公共服务服务全世界全网同胞,如果是公司内部使用的包,含一些定制化,私有化,不方便发布到外网的组件或者package,应该如何处理呢?
常见的做法,
1、封装成组件,下次哪个项目或者开发想要的时候,过来copy 下
2、提交到公司内网的gitlab(内网gitlab搭建) 上,然后在package.json 的依赖里面,使用gitlab地址加分支名来使用该包
3、当然还有其他的奇淫技巧
上面的做法,都有相应的问题,如无法在同一个地方维护,新增的功能或者修复的bug 很难同步到各个项目,没有版本概念等
如果有这么一个像淘宝镜像服务的私有服务是不是就能很丝滑使用?对的,npm 私服就能满足我们私有化服务的要求
2、什么是verdaccio
npm 服务有很多,比如sinopia, cnpm 等。但是你一google npm 私服,搜索出来大部分的结果是 verdaccio。 毫无疑问,这个verdaccio 是受大家最欢迎的。github 地址,vedaccio,官网地址, 官网, 其他的废话不多说,了解更多关于verdaccio 的内容,没有比官网和github更全面了。
3、为什么 要搭建npm 私服
至于为什么要搭建npm 私服,第一点说明了一些背景也是原因,另外一个,私服搭建后,公司 cicd jekins 这类自动化构建工作在拉取这些包时,因为都是走内网,会比去公网拉取更快;npm 私服搭建也是前端自动化环节中很重要的一环;当然这个也算是技术 kpi中的一个。
4、如何搭建verdaccio
来来来,直接上官网。
Verdaccio 是一个 Node.js 私有和代理 registry。 在安装之前,您需要确保系统环境已满足以下条件。
最低要求:
Node.js v16 或者更高。
你喜爱的 Node 包管理器 npm、pnpm 或者 yarn(经典版和现代版)。
使用现代浏览器以访问Web界面, 支持使用 Chrome、 Firefox、 Edge和IE11 浏览器。
安装cli
npm install -g verdaccio

启动
pm2 start verdaccio
pm2 是nodejs 进程管理的一个工具,这里不做缀叙,pm2 这种方法 更适合前端同学或者nodejs 同学的使用。
上面的两个命令执行之后,就可以访问你的私服了。

这个方式可以在本地使用,也可以在liunx 服务器上使用,没有增加额外的心智负担和额外的学习成本。
5、搭建后的使用
发布组件
下面 100.000.100.1 是服务器ip地址,瞎写的,实际使用的时候 换成服务器ip 即可
注册用户
npm adduser --registry http://100.000.100.1:4873
输入账号、密码、邮箱 (这些都随便填,但是要记住,下一步登录的时候 是需要这样的内容的)
登录用户
npm login --registry http://100.000.100.1:4873
输入账号、密码、邮箱
npm publish 发布组件
npm publish --registry http://100.000.100.1:4873
到这里就能看到你组件了,

6、常见问题解决
私服主题定制,比如我要换个头,换个脚,换一个 favicon 等,换成公司的或者自己的。请修改 verdaccio 的配置文件中的 web 字段。 配置文件位置: /root/.config/verdaccio/config.yaml ,
vim /root/.config/verdaccio/config.yaml
# Verdaccio 监听的主机和端口
listen: 0.0.0.0:4873
# 存储包的位置
storage: ./storage
# 配置上游镜像源的设置
uplinks:
taobao:
url: https://registry.npmmirror.com/
# 配置包的访问权限和范围
packages:
'@scope/*':
access: $all
publish: $authenticated
proxy: taobao
# Verdaccio 的身份验证设置
auth:
htpasswd:
file: ./htpasswd
# 配置 Verdaccio 中间件的设置
middlewares:
audit:
enabled: true
# 配置 Verdaccio 的日志记录设置
logs:
- { type: stdout, format: pretty, level: http }
- { type: file, path: verdaccio.log, level: info }
# 配置 Verdaccio 的 Web 界面设置
web:
title: Verdaccio
logo: logo.png
theme: default
# 配置 Verdaccio 的安全设置
security:
api:
jwt:
sign:
expiresIn: 7d
verify:
maxAge: 7d
web:
headers:
X-Content-Type-Options: 'nosniff'
X-Frame-Options: 'deny'
X-XSS-Protection: '1; mode=block'
修改结束后,需要重新启动下 verdaccio, 才能让配置文件生效
pm2 restart verdaccio
npm install 时,控制台 报 500 internal error
其他
1、域名配置,不要ip访问
2、配置https 证书
3、自动发布组件&更新组件 version 号
上面的几个问题,都已经解决,目前因为篇幅原因、时间等原因,本篇不做详细展开,会在下一篇做详细解释。
本篇内容不是很适合没有一点linux基础或者 nodejs的同学,相关知识 麻烦单独学习下, 比如 linux服务器购买,linux 服务器的基本命令使用,pm2 的安装和使用。也可以加群一起讨论。
8、寻找正在使用或者想用verdaccio的道友
如果需要或者喜欢用verdaccio的朋友,欢迎加我微信(备注 verdaccio, 或者npm 私服)拉群一起讨论使用。
目前这套私服已经在为公司服务,使用时间越长,问题就会越多,欢迎一起参与讨论,让私服更稳定,更好用

npm私服 verdaccio 搭建的更多相关文章
- vue组件库(二):基于verdaccio工具npm私服搭建
大纲 搭建npm私服的必要性 搭建npm私服的主要操作 一.搭建npm私服的必要性 二.搭建npm私服的主要操作 1.环境准备 确保服务器已安装以下包: node(必须) 安装了nodenpm,如果想 ...
- npm 私服工具verdaccio 搭建
npm私服搭建的必要性 1.如果公司处于隐私保护的需要,不想讲自己封的包推到npm社区,但又急需要一套完整的包管理工具来管理越来越多的组件,模块,项目.对于前端,最熟悉的莫过于npm,bower等,但 ...
- 搭建npm私服流程
npm私服必要性 1. 如果公司处于隐私保护的需要,不想将自己封的包推到npm社区,但又急需要一套完整的包管理工具来管理越来越多的组件,模块,项目.对于前端,最熟悉的莫过于npm,bower等,但是b ...
- Nexus 3 搭建 npm 私服 (windows)
Nexus 3 搭建 npm 私服备忘 下载与安装 在官网下载Nexus Repository Manager OSS 3.x, 解压至任意位置. 管理员运行 powershell, 切换到 nexu ...
- 使用verdaccio 搭建npm私有仓库
使用verdaccio 搭建npm私有仓库 1. 为什么要搭建私有的npm仓库? 随着公司的业务越来越复杂,项目迭代速度也越来越快,那么项目间的常用的业务代码共享变得非常之有必要.但是对于公司的 ...
- npm私服搭建
本文是在 centos7 下利用 nexus 搭建 npm 私服的整理 一.安装 JDK 1.下载 JDK 2.安装 tar zxvf jdk-8u191-linux-x64.tar.gz .0_19 ...
- 使用 Nexus3 Repository Manager 搭建 npm 私服
公司里一般都有自己的私服,用于管理封装的工具插件等,Nexus2主要是用于maven/gralde仓库的统一管理,Nexus3则添加了npm插件,可以对npm提供支持,其实用于npm仓库管理的还有一个 ...
- 使用 docker + verdaccio 搭建npm私有仓库
本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作.系统环境是 Linux. verdaccio verdaccio 是 ...
- 使用nexus搭建npm私服
第一步,下载nexus 下载链接: https://pan.baidu.com/s/1GOYi2M3nT4Wcy7JEYmnqdA 提取码: a9hf 第二步,解压缩 我下载的是nexus-3.16. ...
- maven nexus 私服的搭建学习
之前对maven有过初步的了解与认识,自己也创建过项目使用其来管理,但都是非常粗浅的操作,今天在高人的指点下,也学着在自己的电脑上搭建一个maven私服,虽然技术难度也不高,但为了更深层次的提高,这些 ...
随机推荐
- C#开发的应用升级更新服务器端工具 - 开源研究系列文章 - 个人小作品
笔者开发过一些小应用,然后这些应用就需要有升级更新的功能,但是如果每个都集成进去也行,但是就是得写死更新的代码了.于是就想写一个应用升级更新的管理器,以前看到过Github上有一个AutoUpdate ...
- Dijkstra(迪杰斯特拉)算法
Dijkstra是什么算法 Dijkstra是典型最短路径算法,用于计算一个节点到其他节点的最短路径.该算法使用的是贪心策略:每次都找出剩余顶点中与源点距离最近的一个顶点. 什么是最短路径问题 给定 ...
- java中SimpleDateFormat解析日期格式的问题
在日常写代码的过程中,我们经常要处理各种格式的日期,常见的日期格式有:"20240601","2024-06-01","2024-6-1". ...
- c# 语音识别 | 智能对话
在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音. 以上,当我说"name",显示"Darren",我说"age&q ...
- Nodejs内置中间件 第三方中间件 cookie和session
内置中间件 express也提供了好用的内置中间件,如提供一个静态资源管理的中间件,通过此中间件就可以帮助为我们快速搭建一个静态资源服务器 app.use(express.static('托管目录地址 ...
- python 如何判断一组数呈上升还是下降趋势
1. python 判断一组数呈上升还是下降趋势的方法 要判断一组数(数列)是呈上升趋势.下降趋势还是无明显趋势,我们可以比较数列中相邻元素的差值.如果大部分差值都是正数,则数列呈上升趋势:如果大部分 ...
- .net core .net5 asp.net core mvc 与quartz.net 3.3.3 新版本调用方式
参照了:https://www.cnblogs.com/LaoPaoEr/p/15129899.html 1.项目Nuget引用Quartz.AspNetCore和Quartz.Extensions. ...
- pyenv-win 替换国内镜像源
前情提要 今天心血来潮想学一学python 然后因为python版本众多,了解到了pyenv这个python版本管理器 在github下载好pyenv以后,打算先安装一个稳定的版本 pyenv ins ...
- LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefix tuing等]
LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning.Lora.Prefix tuing等] 由于LLM参数量都是在亿级以上,少则数十亿,多则 ...
- Java的运行机制和JDK,JRE,JVM的区别
源文件(Java文件) > 编译器 > 字节码(class文件) > JVM(java虚拟机) > 操作系统 1.java首先利用文本编辑器写java源程序, ...