基于nexus3搭建npm私服

基于nexus3搭建npm私服

1.  nexus repository oss是什么?

是用来存储仓库的免费工具,可以用来存储jar, docker, npm等软件包,也可以存储其他文件格式,不依赖mysql等,下载包可直接运行。支持的列表见下图 image.png

2.  下载&运行(以docker为例)

2.1 拉取nexus3镜像

# 运行指令
docker pull sonatype/nexus3
复制代码

image.png

2.2 建立volume持久化数据

# 运行指令
docker volume create --name nexus-data
复制代码

image.png

2.3 运行容器

# 运行指令
docker run --privileged=true -d -p 8801:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3 
复制代码

image.png 可以看到容器已经在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,复制密码,然后登录后重置密码 image.png image.png

3.2 创建Host (私有的) proxy(代理) group(对外开放的)仓库

3.2.1 npm-host

image.png

3.2.2 npm-proxy

image.png

3.2.3 npm-group

image.png

4 添加角色

npm发布包是需要先登录的,这里我们只是想把包发布到自己私有的服务器上。

4.1. 添加权限认证

设置权限, Realms 菜单, 将 npm Bearer Token Realm 添加到右边 image.png

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-* image.png

4.3. 创建角色,同时设置角色为nx-deploy

image.png

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="
复制代码

image.png

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"
  }
}
复制代码

image.png

5.3 创建index.js,并通过npm publish上传npm包

image.png image.png

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
复制代码

image.png 可以看到已经成功下载刚刚上传到私服的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
复制代码

image.png image.png

6 参考文档

linux搭建Nexus3.x私服

使用 Nexus3 Repository Manager 搭建 npm 私服

7 总结

npm私服搭建只是第一步,npm版本号如何管理?npm包如何管理多个依赖?如何处理各系统npm包版本号不同的问题?如何在开发环境高效开发npm组件?等这些问题都是需要在npm私服管理落地时去思考的。

分类:
前端
标签: