NPM私服搭建(verdaccio)

  • 官网地址:https://verdaccio.org/

概述

Verdaccio 是一个流行的 Node.js 包管理器的代理工具,它允许您在本地或私有网络上轻松地创建和管理 npm 包仓库。通过 Verdaccio,开发团队可以建立自己的 npm 包仓库,以更好地控制和管理其依赖项,同时还可以提供更快速的包下载速度,减轻 npm中心服务器的负载。

Verdaccio 的工作原理

Verdaccio 的核心原理是代理 npm 注册表。它可以被视为一个本地 npm 注册表的缓存,并提供了一个用户友好的界面,使您能够在其中发布、安装和管理包。其工作原理如下:

  1. 代理 npm 注册表:Verdaccio 允许您配置它以代理 npm 的官方注册表或其他任何 npm 注册表。当您尝试安装、发布或访问包时,Verdaccio 将首先查看本地缓存,如果找到所需的包,它将立即提供。如果没有找到,它将向上游注册表发送请求,获取包并将其缓存到本地以供将来使用。
  2. 本地包存储:Verdaccio 提供了本地包存储的功能,这意味着您可以在本地创建和发布自己的 npm 包,无需将其发布到公共 npm 注册表。这对于内部项目、私有库或需要保护知识产权的情况非常有用。
  3. 安全性:Verdaccio 支持访问控制、身份验证和权限管理,您可以通过配置来限制谁可以发布、访问或管理仓库中的包。这有助于保护您的包和代码免受未经授权的访问和修改。
  4. 高度可定制性:Verdaccio 可以根据您的需求进行高度定制。您可以配置其插件、主题、中间件和许多其他选项,以满足特定项目或组织的要求。

Verdaccio 的用途

Verdaccio 在许多不同情境下都非常有用,以下是一些主要用途:

  1. 本地开发:在开发过程中,为了更快地安装和访问依赖项,开发人员可以在本地搭建 Verdaccio 服务器。这样,他们可以使用本地缓存,而不必每次都从公共 npm 注册表下载依赖项,从而提高开发效率。
  2. 内部项目:对于组织内部的项目,特别是那些需要保护知识产权或不希望将代码公开的项目,Verdaccio 提供了一个方便的方式来创建和管理本地 npm 仓库。这确保了包不会意外泄漏到公共 npm 注册表。
  3. 离线环境:在没有互联网连接或带宽有限的环境中,Verdaccio 允许您创建一个本地的 npm 缓存,以确保团队成员可以继续开发,而不受网络限制的干扰。
  4. 安全性:Verdaccio 的权限控制和身份验证功能使您能够更好地管理谁可以访问和发布包,从而提高了包的安全性。这对于保护内部项目或提供有限访问权限的场景非常重要。

搭建部署

1.创建YAML文件

mkdir verdaccio&&cd verdaccio
vim docker-compose-verdaccio.yml
version: '3.4'
services:verdaccio:image: verdaccio/verdacciocontainer_name: "verdaccio"environment:# VERDACCIO 服务端口- VERDACCIO_PORT=3005# 当前登录 linux 服务器的用户名- VERDACCIO_USER_NAME="root"ports:# 宿主和容器的端口- "3005:3005"volumes:- "./storage:/verdaccio/storage"- "./config:/verdaccio/conf"- "./plugins:/verdaccio/plugins"
  1. 创建配置文件
vim config.yaml
storage: /verdaccio/storage
web:# 网站Titletitle: 私有NPM服务# 禁用Gravatar头像# gravatar: false# 排序方式 asc|desc# sort_packages: asc# 是否启用暗黑模式# darkMode: true# logo地址# logo: http://somedomain/somelogo.png# favicon地址# favicon: http://somedomain/favicon.ico | /path/favicon.ico# i18n翻译配置
# i18n:
# 可用列表见:https://github.com/verdaccio/ui/tree/master/i18n/translations
#   web: en-US
auth:htpasswd:file: /verdaccio/conf/htpasswd# 上游npm库,这里可用设置为淘宝
uplinks:npmjs:url: https://registry.npmjs.org/server2:url: https://registry.npmmirror.com/server3:url: https://mirrors.cloud.tencent.com/npm/packages:'@*/*':# 允许所有人访问access: $all# 注册用户可访问publish: $authenticated# 注册用户可访问unpublish: $authenticatedproxy: npmjs server2 server3'**':# 这里如果不设置在使用 npm i xxx、 npm publish 时将会提示包不存在,为了方便这里直接设置上如下两行# 默认情况下所有用户 (包括未授权用户) 都可以查看和发布任意包# 你可以指定 用户名/分组名 (取决于你使用什么授权插件,默认的授权插件是内置的 htpasswd)# 访问权限有三个关键词: "$all", "$anonymous", "$authenticated"# $all 表示不限制,任何人可访问;# $anonymous 表示未注册用户可访问;# $authenticated 表示只有注册用户可访问access: $allpublish: $authenticatedunpublish: $authenticated# 如果私有包服务不可用在本地,则会代理请求到'npmjs'proxy: npmjs server2 server3# 您可以指定传入连接的HTTP /1.1服务器保持活动超时(以秒为单位)。
# 值为0会使http服务器的行为类似于8.0.0之前的Node.js版本,后者没有保持活动超时。
# 解决方法:通过给定的配置可以解决以下问题
server:keepAliveTimeout: 60# 中间件
middlewares:audit:enabled: true# 日志设置
logs:- {type: stdout, format: pretty, level: http}# 开放远程访问,允许所有IP
listen:# 这个端口务必对应上- 0.0.0.0:3005

3.创建认证文件与config.yaml同级目录

htpasswd -c  htpasswd admin

4.启动服务

docker-compose -f docker-compose-verdaccio.yml up -d
#需给目录设置权限,否则使用时会报错没有权限存储
chmod 777 -R storage config plugins

5.访问服务

http://IP:3005

在这里插入图片描述
6.使用私服

#设置私服仓库
npm set registry http://localhost:4873/         #设置默认仓库地址
npm install --registry http://localhost:4873    #设置本次安装的仓库地址

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【力扣】Z 字形变换,模拟 + 直接构造

Z 字形变换原题地址 方法一:利用二维矩阵模拟 对于特殊情况,Z 字形变换后只有一行或只有一列,则变换后的字符串和原字符串相同。 对于一般情况,我们可以考虑按照题目要求,把字符串按照 Z 字形存储到二维数组中&…

做抖店想要快速起店怎么办?产品和流量是关键!新手可收藏!

大家好,我是电商小布。 在抖音小店开通完成后,大家考虑的第一件事情,一定是小店如何能够快速出单,成功起店。 店铺出单的重点,其实就在小店的运营上。 那么这么多的环节,关键点在哪呢? 答案…

大学生多媒体课程学习网站thinkphp+vue

开发语言:php 后端框架:Thinkphp 前端框架:vue.js 服务器:apache 数据库:mysql 运行环境:phpstudy/wamp/xammp等开发背景 (一) 研究课程的提出 (二)学习网站的分类与界定…

前端页面之间传输数据 localStorage

效果 发送方 接收方 localStorage 的使用 // 保存数据 localStorage.setItem(key, value); // 获取数据 localStorage.getItem(key);发送方 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录<…

【深蓝学院】移动机器人运动规划--第6章 模型预测控制(MPC)与运动规划--笔记

0. Outline 1. Reactive Control&#xff08;反应式控制&#xff09; 控制学中的 “Reactive Control” 通常指的是一种控制策略&#xff0c;它依赖于系统对特定事件或变化的即时反应&#xff0c;而不是按照预定的计划或策略行动。这种控制往往是基于当前的传感器输入来做出决…

c编译器学习07:minilisp编译器改造(debug模式支持调试)

问题 原版的minilisp编译器不支持argv输入测试&#xff0c;不方便单步调试。 代码改造目标是既不改变原有程序的各种功能&#xff0c; 又能支持个人习惯的vs单步debug模式。 CMakeLists.txt变更 定义DEBUG宏 解决单步调试源码定位偏差问题 cmake_minimum_required(VERSION …

【Android安全】Windows 环境下载 Android 源码

准备环境 安装 git 安装 Python 硬盘剩余容量最好大于 100G 打开 Git Bash&#xff0c;用 git 克隆源代码仓库 git clone https://android.googlesource.com/platform/manifest.git //没有梯子使用清华源 git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git…

RabbitMQ 部署方式选择

部署模式 RabbitMQ支持多种部署模式&#xff0c;可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式&#xff1a; 单节点模式&#xff1a; 最简单的部署方式&#xff0c;所有的RabbitMQ组件&#xff08;消息存储、交换机、队列等&#xff09;都运行在…

TensorRT及CUDA自学笔记003 NVCC及其命令行参数

TensorRT及CUDA自学笔记003 NVCC及其命令行参数 各位大佬&#xff0c;这是我的自学笔记&#xff0c;如有错误请指正&#xff0c;也欢迎在评论区学习交流&#xff0c;谢谢&#xff01; NVCC是一种编译器&#xff0c;基于一些命令行参数可以将使用PTX或C语言编写的代码编译成可…

新手如何自己建网站的详细步骤?-网站建设

新手如何自己建网站的详细步骤&#xff1f;-网站建设 我们选择了白嫖雨云的二级域名 浏览器输入https://www.rainyun.com/z22_ 创建账号然后选择一个你喜欢的子域名我建议后缀选择ates.top的 选择自定义地址&#xff0c;类型选择cname 现在要选择记录值了&#xff0c;有a&…

linux内核原理--页高速缓存,回写,页框回收

1.页高速缓存 我们主要分析下磁盘文件的页高速缓存 struct address_space {struct inode *host; struct radix_tree_root page_tree; spinlock_t tree_lock;unsigned int i_mmap_writable;struct prio_tree_root i_mmap; struct list_head i_mmap_nonlinear;spinlock_t i_…

2023最新简绘AI开源版支持MJ绘画,AI问答

应用介绍 本文来自&#xff1a;2023最新简绘AI开源版支持MJ绘画&#xff0c;AI问答 - 源码1688 简介&#xff1a; 简绘AI开源版&#xff0c;从闲鱼上买的&#xff0c;搭建教程如下 测试环境&#xff1a;NginxPHP7.4MySQL5.6 图片&#xff1a;

com.alibaba.nacos.api.exception.NacosException: Request nacos server failed

问题描述 安装nacos2.0以上版本&#xff0c;启动报错:com.alibaba.nacos.api.exception.NacosException: Request nacos server failed com.alibaba.nacos.api.exception.NacosException: Request nacos server failed: at com.alibaba.nacos.client.naming.remote.gprc.Nami…

2024022402-数据库恢复技术

数据库恢复技术 什么是事务 事务(Transaction)是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个不可分割的工作单位 事务和程序是两个概念 在关系数据库中&#xff0c;一个事务可以是一条SQL语句&#xff0c;一组SQL语…

Movelt使用笔记-Movelt Setup Assistant

目录 Setup Assistant配置1 Start 加载urdf模型3 Virtual joints 虚拟关节5 Robot Poses 机器人位姿7 Passive Joints 被动关节8 Controllers 控制器9 Simulation 仿真10 3D Perception 3D感知11 Author Information 作者信息12 Configuration Files 配置文件启动MoveIt!Setup…

潇洒郎:2024 IDEA、Pycharm获取最新激活码获取方式

IDEA获取最新激活码 https://idea.javatiku.cn/ 手机打开&#xff0c;看到验证码&#xff0c;30分钟有效&#xff0c;输入验证码 获取到最新激活码

Vue.js+SpringBoot开发超市商品管理系统

目录 一、摘要1.1 简介1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 超市区域模块2.3 超市货架模块2.4 商品类型模块2.5 商品档案模块 三、系统设计3.1 用例图3.2 时序图3.3 类图3.4 E-R图 四、系统实现4.1 登录4.2 注册4.3 主页4.4 超市区域管理4.5 超市货架管理4.6 商品类型…

IT廉连看——C语言——数组

IT廉连看——C语言——数组 一、一维数组的创建和初始化 1.1 数组的创建 数组是一组相同类型元素的集合。 数组的创建方式&#xff1a; type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式&#xff0c;用来指定数组的大小 数组创建…

onlyoffice api开发

编写代码 按照https://api.onlyoffice.com/editors/basic编写代码 <html> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scal…

Linux应用-ElasticSearch安装

ElasticSearch安装部署 简介 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 es&#xff09;是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。 Elasticsearch简称es&…