如何搭建本地的 NPM 私有仓库 Nexus

NPM 本地私有仓库,是在本地搭建NPM私有仓库,对公司级别的组件库进行管理。在日常开发中,经常会遇到抽象公共组件的场景,在项目内部进行公用。新的项目开始时,也会拷贝一份创建一个新的项目,这样做不易于管理,也没有进行有效的版本控制,组件升级之后,也很难对已有项目进行更新,最后个项目各自为政,各自维护,新开发功能不能共享。

公司的共用组件大多是公司内部资产,由于涉及到知识产权的问题,禁止发布到公网。所以,内部前端私有仓库非常有必要,开源的 NPM 私有仓库又很多选择,轻量级例如Verdaccio,我这里用的是 Nexus,Nexus 的优势是,它不仅支持 NPM 私有仓库,也支持 Maven 的私有仓库,这样前后端都可以用同一个系统去管理,减轻了运维的压力。

安装

使用 docker 进行安装,进入查看是否安装成功 http://localhost:8081/

复制代码
docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3

## 查找 admin 密码
docker exec -ti nexus cat /opt/sonatype/sonatype-work/nexus3/admin.password

创建项目

下面我们添加一个项目进行测试

  1. 创建测试项目

    mkdir test-module
    cd test-module
    npm init -y

2 添加文件 index.js

复制代码
function greet(name) {
    return `Hello, ${name}!`;
}

module.exports = greet;
  1. 创建仓库

    输入名称,设置是否允许更新,这里设置的是允许重新发布。

    设置 Security -- Realms,激活 npm Bearer Token Realm

  2. 提交新项目

设置 registry

复制代码
npm config set registry http://nexus-server-url:8081/repository/localnpm/

登录并提交项目

复制代码
npm login --registry=http://nexus-server-url:8081/repository/localnpm/
npm publish

检查项目是否上传成功

  1. 设置 repository group,由于本地仓库初始化时只有内部库,而开发项目时我们需要很多三方库,Nexus 支持缓存外部库。拉取时我们要指定 registry 为 repository group,这个group 包括两个本地仓库和代理仓库,本地库找不到,就去代理库找,添加代理仓库和仓库组。
    添加 npm proxy,设置taobao 镜像地址

    添加仓库组:

    设置registry 并测试

    #设置registry,这样可以拉到本地库和远程三方库
    npm config set registry http://nexus-server-url:8081/repository/npm-all/

    #发布时要指定为本地仓
    npm publish --registry http://nexus-server-url:8081/repository/localnpm/

相关推荐
大家的林语冰33 分钟前
CSS 已死?DOM 性能黑洞!Pretext 排版革命让你在文本间跳舞,没有 DOM 也能纵享丝滑~
前端·javascript·css
vipbic43 分钟前
我也该升级了,陪伴了我7年的博客
前端
Lee川1 小时前
RAG 实战:从一篇掘金文章出发,拆解检索增强生成的全链路
前端·人工智能·后端
Lee川1 小时前
MCP 高德地图实战:当 AI 学会使用工具,一个协议如何重塑大模型的行动边界
前端·人工智能·后端
ZC跨境爬虫1 小时前
跟着 MDN 学CSS day_14:(尺寸调整技能测试与实战解析)
前端·css·ui·html·tensorflow
kyriewen2 小时前
用魔法打败魔法:我让AI替我去面试前端岗,AI面试官给我打了92分,还发了offer
前端·javascript·面试
IT_陈寒2 小时前
Redis批量删除踩了坑,原来DEL命令不是万能的
前端·人工智能·后端
lichenyang4532 小时前
鸿蒙聊天 Demo 练习 06:AI 思考气泡与 MVVM + Controller 结构重构
前端
Lkstar2 小时前
Vue keep-alive 原理全解:LRU 缓存策略、源码级理解
前端·vue.js·面试
会联营的陆逊2 小时前
html2canvas 1.4.1 在 iOS Safari 中生成图片卡住的问题排查与修复
前端