当前位置: 首页 > news >正文

Nexus配置npm私有仓库

对于前端项目的运行,我们一般要使用npm来管理依赖Node.js的依赖,安装依赖一般要指定镜像的下载地址如:npm config set registry https://registry.npmmirror.com,但这种方式比较依赖网络,每次都要从远程拉取,对于企业内网开发,这种直连公共仓库方式往往不适用,本文介绍了使用Nexus配置私有npm仓库来拉取依赖过程。

私有npm仓库解决的问题

  • 私有存储空间:安全存储内部npm包
  • 代理缓存:缓存后的依赖可离线使用,减少重复下载
  • 统一管理:集中控制所有依赖来源,可给多个项目使用

一、 Nexus介绍

Nexus简介

Nexus(由Sonatype开发)是一款强大的私有仓库管理平台,用于统一管理二进制构件(如软件包、依赖库、容器镜像等),支持多种技术栈(如Maven、npm、Docker、NuGet等)。它通过本地化存储和代理远程仓库,显著提升团队开发效率与安全性。

Nexus核心概念

Nexus的核心是仓库(Repository),分为三类:

  • Hosted(本地仓库):用于存储团队私有构件(如自研npm包、内部Docker镜像)。
  • Proxy(代理仓库):代理并缓存远程公共仓库(如npmjs.org、Docker Hub),首次下载后缓存到本地,后续请求直接读取缓存。示例:配置npm-proxy代理淘宝镜像,加速依赖下载。
  • Group(仓库组):聚合多个Hosted和Proxy仓库,提供统一访问入口。示例:npm-public组合npm-proxy(开源依赖)和npm-hosted(私有包),用户只需配置一个地址

二、配置过程

1. 前置条件

  • Nexus服务已部署好
  • 开放Nexus服务器对registry.npmmirror.com:443的出站访问

2.本地仓库创建(hosted类型)

创建hosted类型的npm仓库,找到设置页面
在这里插入图片描述
选择npm(hosted)类型,hosted表示本机私有
在这里插入图片描述

填写新建的仓库信息
在这里插入图片描述

这里blob store(文件存储配置)选择了默认的,deployment policy选择Allow redeploy,Allow Redeploy(允许重新部署)允许用户多次上传相同版本的构件,新上传的构件会覆盖已有的构件。

3.代理仓库创建(proxy类型)

创建一个proxy类型的仓库,当依赖下载时,请求到达 Nexus -> 检查本地缓存 -> 若有缓存则直接返回 → 若无则从配置的镜像仓库下载并缓存。

在这里插入图片描述
这里镜像拉取地址选择了:https://registry.npmmirror.com 淘宝镜像源

4.仓库组创建(group类型)

创建仓库时选择npm-gruop类型,并把刚才常见的成员将npm-localnpm-proxy加入组
在这里插入图片描述
回到浏览页面,可以看到刚刚创建的3个仓库
在这里插入图片描述
点击拷贝url我们就能拿到需要配置的url仓库地址:http://xxx.xxx.xxx.xxx:8081/repository/npm-public/

三、验证测试

在拉取依赖时,配置替换为我们Nexus镜像仓库地址:npm config set registry http://xxx.xxx.xxx.xxx:8081/repository/npm-public/

四、常见问题

发布时遇到401未授权错误
在这里插入图片描述
此时需要开启npm的Bearer Token认证机制,配置如下
在这里插入图片描述

http://www.xdnf.cn/news/1239787.html

相关文章:

  • Java项目:基于SSM框架实现的商铺租赁管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告+任务书+远程部署】
  • LLM大模型开发-SpringAI:ChatClient、Ollama、Advisor
  • io_destroy系统调用及示例
  • 基于 LangChain + 通义千问 + bge-large 中文 Embedding 搭建一个RAG问答示例
  • FastAPI入门:安全性
  • 第12届蓝桥杯Scratch图形化【省赛】初级组 2021年4月24日
  • MySQL学习之MVCC多版本并发控制
  • python常用数据类型
  • 13.Redis 的级联复制
  • 03.一键编译安装Redis脚本
  • sqli-labs:Less-23关卡详细解析
  • 【运维基础】Linux 硬盘分区管理
  • 数据集相关类代码回顾理解 | StratifiedShuffleSplit\transforms.ToTensor\Counter
  • Corrosion2靶机练习笔记
  • 选择排序原理与C语言实现详解
  • 第15届蓝桥杯Scratch图形化国赛初/中级组2024年9月7日真题
  • 【LeetCode刷题指南】--对称二叉树,另一颗树的子树
  • 【量化交易】日内交易有效特征因子
  • Socket编程——TCP协议
  • 智慧社区(六)——社区居民人脸识别功能实现详解:从腾讯 API 集成到模拟验证
  • CMake 命令行参数完全指南(2)
  • C++入门自学Day5-- C/C++内存管理(续)
  • 控制建模matlab练习08:根轨迹
  • 【图像处理基石】如何使用deepseek进行图像质量的分析?
  • pycharm上如何添加conda环境
  • 当Windows远程桌面出现“身份验证错误。要求的函数不受支持”的问题
  • [硬件电路-150]:数字电路 - 数字电路与模拟电路的异同
  • Ollama模型库模型下载慢完美解决(全平台)
  • 算法讲解--最大连续1的个数
  • RSA 解密逻辑