Nexus配置npm私有仓库全过程

 更新时间:2025年08月15日 10:00:14   作者:yifanghub  
本文介绍企业内网环境下使用Nexus搭建私有npm仓库,通过代理缓存和统一管理提升依赖下载效率与安全性,解决公共仓库网络依赖问题,并指导401认证配置

对于前端项目的运行,我们一般要使用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认证机制,配置如下

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java Stream操作转换方法

    java Stream操作转换方法

    文章总结了Java 8中流(Stream) API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、函数式接口等,展示了流API在处理集合数据时的强大和灵活性,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • Java动态代理的示例详解

    Java动态代理的示例详解

    动态代理指的是,代理类和目标类的关系在程序运行的时候确定的,客户通过代理类来调用目标对象的方法,是在程序运行时根据需要动态的创建目标类的代理对象。本文将通过案例详细讲解一下动态代理,需要的可以参考一下
    2022-02-02
  • SpringBoot 如何读取classpath下的文件

    SpringBoot 如何读取classpath下的文件

    这篇文章主要介绍了SpringBoot 读取classpath下的文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JAVA集成本地部署的DeepSeek的图文教程

    JAVA集成本地部署的DeepSeek的图文教程

    本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • Java使用Flexmark-Java轻松实现Markdown全场景转换

    Java使用Flexmark-Java轻松实现Markdown全场景转换

    Flexmark-Java是一款高性能的Markdown解析器,无论是将Markdown转换为HTML、PDF还是DOCX,这款工具都能提供高速处理、高度灵活性以及详细的AST构建能力,帮助开发者轻松应对各类文档转换需求,本文给大家介绍了如何用Flexmark-Java轻松实现Markdown全场景转换
    2025-11-11
  • springmvc无法访问/WEB-INF/views下的jsp的解决方法

    springmvc无法访问/WEB-INF/views下的jsp的解决方法

    本篇文章主要介绍了springmvc无法访问/WEB-INF/views下的jsp的解决方法,非常具有实用价值,需要的朋友可以参考下
    2017-10-10
  • springcloud 如何解决微服务之间token传递问题

    springcloud 如何解决微服务之间token传递问题

    这篇文章主要介绍了springcloud 如何解决微服务之间token传递问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Javaweb使用thymeleaf局部刷新结合Layui插件实现Html分页

    Javaweb使用thymeleaf局部刷新结合Layui插件实现Html分页

    本文主要介绍了Javaweb使用thymeleaf局部刷新结合Layui插件实现Html分页,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Java子类调用父类的私有属性的实现示例

    Java子类调用父类的私有属性的实现示例

    在Java中,我们都知道子类不能直接访问或修改父类的私有属性,本文主要介绍了Java子类调用父类的私有属性的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • java自动生成ID号的方法

    java自动生成ID号的方法

    这篇文章主要介绍了java自动生成ID号的方法,涉及java生成ID号的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论