1. nexus repository oss是什么?
是用来存储仓库的免费工具,可以用来存储jar, docker, npm等软件包,也可以存储其他文件格式,不依赖mysql等,下载包可直接运行。支持的列表见下图
2. 下载&运行(以docker为例)
2.1 拉取nexus3镜像
# 运行指令
docker pull sonatype/nexus3
复制代码
2.2 建立volume持久化数据
# 运行指令
docker volume create --name nexus-data
复制代码
2.3 运行容器
# 运行指令
docker run --privileged=true -d -p 8801:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
复制代码
可以看到容器已经在8801端口运行 \
tip:
-id 创建守护式容器
--privileged=true 授予root权限(挂载多级目录必须为true,否则容器访问宿主机权限不足)
--name=名字 给你的容器起个名字
-p 宿主机端口:容器端口映射
-v 宿主机目录:容器目录 目录挂载
3 登录 & 创建 Host (私有的) proxy(代理) group(对外开放的)仓库
3.1 获取登录密码
打开/var/lib/docker/volumes/nexus-data/_data下的admin.password,复制密码,然后登录后重置密码
3.2 创建Host (私有的) proxy(代理) group(对外开放的)仓库
3.2.1 npm-host
3.2.2 npm-proxy
3.2.3 npm-group
4 添加角色
npm发布包是需要先登录的,这里我们只是想把包发布到自己私有的服务器上。
4.1. 添加权限认证
设置权限, Realms 菜单, 将 npm Bearer Token Realm 添加到右边
4.2. 创建nx-deploy角色
给角色赋予以下权限/
nx-repository-view---*
nx-repository-admin-npm-npm-group-*
nx-repository-admin-npm-npm-proxy-*
nx-repository-admin-npm-npm-host-*
4.3. 创建角色,同时设置角色为nx-deploy
5.创建第一个npm包
5.1 创建客户端的.npmrc配置 (目录文件下创建)
该文件的作用是避免每次npm publish都用登录
# 配置
registry=http://10.7.4.11:8801/repository/npm-group/
email=18813295951@163.com
always-auth=true
# _auth为 你的账号:你的密码 的base64编码
_auth="TWljaGFlbEpvcmRhbjoxMjM0NTY="
复制代码
5.2 初始化npm项目、并添加publishConfig.registry的配置
# 运行指令
npm init
复制代码
# 配置
{
"name": "gdpg-utils",
"version": "1.0.1",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"publishConfig": {
"registry": "http://10.7.4.11:8801/repository/npm-host/"
},
"author": "",
"license": "ISC",
"dependencies": {
"gdpg-utils": "http://10.7.4.11:8801/repository/npm-host/gdpg-utils/-/gdpg-utils-1.0.1.tgz"
}
}
复制代码
5.3 创建index.js,并通过npm publish上传npm包
5.4 在项目中引用发布在nexus中的gdpg-utils包进行测试
这里使用直接链接包地址的方式,更多npm包的引用方式可以看下面这篇文章
常用的几类npm依赖包管理 - 剑仙6 - 博客园 (cnblogs.com)
# 配置
"dependencies": {
"gdpg-utils": "http://10.7.4.11:8801/repository/npm-host/gdpg-utils/-/gdpg-utils-1.0.1.tgz"
}
复制代码
# 运行指令
npm install
复制代码
可以看到已经成功下载刚刚上传到私服的npm包
5.5 用npm-proxy的缓存效果,缓存下载过的npm包,保证第二次加载同一版本的npm包时,直接加载nexus中npm包缓存
# 设置项目的仓库地址
npm config set registry http://10.7.4.11:8801/repository/npm-group/
复制代码
# 安装axios
npm install axios
复制代码
6 参考文档
使用 Nexus3 Repository Manager 搭建 npm 私服
7 总结
npm私服搭建只是第一步,npm版本号如何管理?npm包如何管理多个依赖?如何处理各系统npm包版本号不同的问题?如何在开发环境高效开发npm组件?等这些问题都是需要在npm私服管理落地时去思考的。