由于公司代码管理需要,在公司搭建了一套内网办公系统。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