安装 Nexus
使用 docker-compose 作部署:
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3:3.21.2
container_name: nexus
ports:
- 8081:8081
volumes:
- ./data:/nexus-data
注意:
- 注意版本号为
sonatype/nexus3:3.21.2
。过高的版本会有 Pro-liscence 的限制,导致 group repository 无法使用。 - 需要为
nexus-data/instance
提供足够的访问权限,否则会因权限不足而无法启动 Nexus。- 如上,对应的 host 的
nexus-data
的目录为./data
,所以需要执行:mkdir ./data/instance && chmod 777 -R ./data/instance
。
- 如上,对应的 host 的
- 第一次登陆时,需要查看默认的 admin 密码,保存于:
./data/admin.password
文件中。
部署 npm 私有仓库
0x01 创建 blob store
创建 npm 专用的 blob store:
0x02 创建 repository
依次创建以下三个类型的 npm repository:
- npm(hosted):用于保存自己上传的
- npm(proxy):用于缓存外部的 repository,如:淘宝镜像(https://registry.npm.taobao.org)。
- npm(group):基于上述两个 repository 创建,供 developer 使用。
说明:将 hosted repository 和 proxy repository 结合,实现了巧妙的「内部」与「外部」的平衡。
hosted repository 可以供应内部开发的 npm package;而外部使用过的 package,由于引入了 proxy repository,得以被缓存到内网。此时,再由其它项目使用相同的 package 时,便可以利用内网的缓存 package,加速 npm install 的过程。
而这,正是使用 Nexus 的优势所在。
注意:上传( npm publish
)自己的代码,使用的是 hosted repository,而从 repository 下拉 package 时( npm i
),使用的是 group repository。切忌将两者混淆。
npm(hosted):
npm(proxy):
npm(group):
0x03 修改 Realm
在 Realms 中添加 npm Bearer Token Realm:
0x04 上传/下载 npm 包
上传 npm 包,安装已上传的 npm 包(下述 127.0.0.1
应修改为你的 Nexus 的真实 IP):
# 设置 group 为默认的 registry
npm config set registry http://127.0.0.1:8081/repository/npm-group/
# 用户登录,携带参数 -registry,以避免上传到 group repository
npm login -registry="http://127.0.0.1:8081/repository/npm-hosted/"
# 上传代码,携带参数 -registry,以避免上传到 group repository
npm publish -registry="http://127.0.0.1:8081/repository/npm-hosted/"
# 安装已上传代码,此时使用的是第一步默认设置的 group repository
npm i pdg-nacos-client