nexus支持npm仓库,可以设置Proxy代理仓库、Hosted自建仓库和Group聚合仓库,以满足前端日常开发和发布需要。

仓库设计

功能入口:Administrator → Repository →Blob Stores/Repositories

  • npm-proxy 代理仓库,remote storage设置为官方仓库(https://registry.npmjs.org),或者国内镜像(https://registry.npm.taobao.org)。独立Blob Stores(npm-proxy),限额10G。

  • npm-hosted 自建仓库,用于本地发布。独立Blob Stores(npm-hosted),限额10G。

  • npm-group 聚合仓库:代理仓库(npm-proxy)和自建仓库(npm-hosted),方便使用。

角色设置

功能入口:Administration → Security → Roles

  1. npm-publish 发布npm,有如下权限

    1. nx-repository-view-npm-npm-hosted-add

    2. nx-repository-view-npm-npm-hosted-edit

    3. nx-repository-view-npm-npm-hosted-read

  2. npm-download 使用npm,有如下权限

    1. nx-repository-view-npm-npm-group-browse

    2. nx-repository-view-npm-npm-group-read

用户设置

Security→Users→Create User:xxx,授予角色:npm-publish、npm-download

开启npm验证

功能入口:Administration → Security → realms → npm Bearer Token realm

客户端使用

  • 查看仓库列表:cat ~/.npmrc

  • 查看当前仓库:npm config get registry

  • 设置当前仓库:npm config set registry

  • 登录:npm login

开发人员使用方法

开发人员在开发过程中需要下载npm的依赖,包括官方的和私有的。

npm config set registry https://repo.liming.pub/nexus/repository/npm-group/ # (1)
npm login --registry=https://repo.liming.pub/nexus/repository/npm-group/ # (2)
npm get registry # (3)
  1. 设置主仓库

  2. 登录主仓库

  3. 检查是否设置成功

配管人员使用方法

配管人员主要职责是发布测试或生产包,所以比开发人员多了个部署发布npm包的权限。

npm打包发布示例
npm config set registry https://repo.liming.pub/nexus/repository/npm-group/ # (1)
npm login --registry=https://repo.liming.pub/nexus/repository/npm-group/ # (2)

npm login --registry=https://repo.liming.pub/nexus/repository/npm-hosted/ # (3)
npm publish --registry=https://repo.liming.pub/nexus/repository/npm-hosted/ # (4)
  1. 设置主仓库为npm-group,可以下载npm-proxy和npm-hosted仓库的npm包

  2. 主仓库(npm-group)登录

  3. 自建仓库(npm-hosted)登录,用于发布私有npm包到npm-hosted

  4. npm指定自建仓库(npm-hosted)发布

    Angular打包发布示例

    .npm_ng_publish.sh

sed -i 's/"peerdependencies"/"dependencies"/g' package.json
npm install
sed -i 's/"dependencies"/"peerdependencies"/g' package.json
npm run packagr
npm publish --registry=https://repo.liming.pub/nexus/repository/npm-hosted/