ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Nexus 搭建 Npm 私服 实战

Nexus 搭建 Npm 私服 实战

由于公司代码管理需要,在公司搭建了一套内网办公系统。GitLab 代码管理 内外网共用一个。Nexus 依赖管理私服 内外网共用一个。目前遇到的问题是 Nexus 私服 配置完成后,安装项目依赖的时候,某个插件报错导致项目依赖安装失败。

最终找的的原因是:该插件的一个依赖库没有上传到npm包管理器,使用的在线的Github仓库,内网是断网开发代码的,所以导致依赖下载失败。

一.Nexus私服有三种仓库类型:

  • Hosted 仓库:

    • 定义:Hosted仓库是本地托管的仓库,用于存储内部构建的构件或第三方构件
    • 用途:主要用于存放组织内部开发的构件,如Maven构件、NPM包等
    • 特点:完全由本地管理,可以进行上传、删除等操作
  • Proxy 仓库:

    • 定义:Proxy仓库是远程仓库的代理,用于缓存从远程仓库下载的构件。
    • 用途:主要用于代理公共仓库,如Maven Central、JCenter等,减少对外部网络的依赖,提高构建速度
    • 特点:自动缓存从远程仓库下载的构件,当本地没有某个构件时,会从远程仓库下载并缓存到本地
  • Group 仓库:

    • 定义:Group仓库是一个虚拟仓库,它将多个仓库(包括Hosted和Proxy仓库)组合在一起,提供统一的访问点
    • 用途:主要用于简化客户端配置,客户端只需要配置一个Group仓库地址,即可访问多个仓库中的构件。
    • 特点:客户端请求构件时,Group仓库会按顺序检查其成员仓库,找到后返回给客户端

二.依赖下载失败解决办法:

1.在npm包管理器找到该插件对应版本的包,把package.json中的依赖库改成正常的版本号引入形式

2.在npm hosted 仓库内 上传 修改后插件库的软件包

源代码 package,json 修改后 在终端使用 npm pack 会根据 package.json 自动打包当前项目,生成一个 .tgz 文件,在Nexus网页版选择上传该插件到指定库

3.在npm hosted 仓库内 上传 该插件依赖库的软件包

4.在 group 仓库 和 proxy 仓库删除原本存在的就插件,保证整个库只有 hosted 仓库 自定义的 插件

5.在Nexus设置里面配置group仓库,按顺序加入hosted proxy 仓库

6.在Nexus设置里面配置 Security Realms 加入npm Bearer Token Realm

三. 云桌面 Nexus 私服 npm 管理

npm config set registry https://registry.npmmirror.com/ npm config set registry http://192.168.0.194:8081/repository/mings-node/ npm config set registry http://192.168.0.194:8081/repository/ming-node-host/ npm config get registry npm install mpegts.js@1.8.0 npm pack 会根据 package.json 自动打包当前项目,生成一个 .tgz 文件 npm cache clean --force npm login npm publish
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进