Javascript is required
Nexus搭建npm私服

是什么

Sonatype Nexus Repository OSS是一个著名的开源仓库管理系统,可以作为开发团队的一个很好的选择。

安装

version: '3'
services:
  nexus:
    image: sonatype/nexus3:3.61.0
    restart: always
    container_name: ${CONTAINER_NAME}
    environment:
      - TZ=Asia/Shanghai
    ports:
      - ${PANEL_APP_PORT_HTTP}:8081
    volumes:
      - ./data:/nexus-data

登陆

cat  cat /nexus-data/admin.password

默认账号admin

admin 
xxxxxxxx

访问 nexus建立一个 docker仓库

==docker仓库类型==

  • hosted: 此类型的仓库,能够push 和 pull操做,能够看成咱们项目开发中的私有仓库
  • proxy: 此类型的仓库,只能够进行 pull操做,能够代理一些 中央仓库等
  • group: 此类型的仓库,只能够进行 pull操做,用于将多个仓库放到一个组中,便于拉取数据(docker镜像等)使用。

测试

╰─$ docker build -f Dockerfile -t taolin/vue3-test .

╰─$ docker login http://10.1.23.61:9001     

╰─$ docker tag taolin/vue3-test 10.1.23.61:9001/vue3  

╰─$ docker push 10.1.23.61:9001/vue3                                                                                                                                                                                                         111

然后查询

npm仓库

创建存储空间(如果使用默认的存储空间,此步骤可省略)

创建一个类型为file的 blob

新建仓库

  • hosted(私有仓库):用于发布个人开发的npm组件
  • proxy(代理仓库):可以代理npm和淘宝镜像
  • group(组合仓库):对外公开的仓库,集合了hosted和proxy

注意:选择要包括的仓库,越靠上优先级越高,如果私有仓库在上,用户下载npm包的时候会优先下载私有仓库中的,如果私有仓库没有再去代理仓库中下载。

创建完成

创建用户

用户的状态值一定是Active\n

权限配置

设置权限,这一步如果不设置,是不能发布自己的npm包的

激活 npm Bearer Token Realm

将npm Bearer 移动到Active,否则npm会无法访问代理库,导致下载失败

创建开发权限组对hosted npm私服库读写权限

用户端使用私服发布私服npm

用户端设置npm的registry为group仓库

 nrm add npm-server http://xxxxxxxxx:8081/repository/npm-group/
npm login

推送

推送npm包到nexus

npm publish –registry http://${ip}:8081/repository/${npm_hosted}

校验发布成功

上传完成,即可在local看到上传的包,而由于group集合了local 和 proxy,group中也可看到缓存的包。

其他

匿名用户可以下载私服npm包,只有dev组内的帐户才能publish包到hosted私服

在npm中,访问需要用户名密码的仓库,如果没有登录会收到如下的错误提示。

npm ERR! code E401
npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository Manager"

需要允许匿名访问

但是匿名用户仍然可以看到发布了那些包, 所以需要重新建立一个Roles然后取消默认的游客角色。

本机私服配置

npm config get registry