使用nexus2.13.0搭建npm私服

1,575 阅读4分钟

第一步:创建一个插件或者组件,以轨迹插件为例

   轨迹插件封装文档:juejin.cn/post/692653…

   vue组件发布到npm私服文档:juejin.cn/post/711940…

**1.**进入到轨迹插件文件夹下,然后进入终端执行npm init生成package.json文件用于记录当前插件的信息,如下所示:     

package name: 项目名称version: 版本号description: 项目描述entry point: 项目的入口文件test command: 项目启动的时候要用什么命令来执行脚本文件git repository: git的仓库地址keywirds: 项目关键字(用于方便在npm仓库搜素,由于是私服所以不重要)author: 作者名license: 发行项目需要的证书

第二步:配置nexus搭建npm私服 

备注:如何搭建不在此文章叙述

 1.先创建一个Nexus用户

2.搭建host、group、proxy

搭建前先说一下他们都是干嘛用的吧

  hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件以及自己或第三方的项目构件;

  proxy 代理仓库:代理公共的远程仓库;

  group仓库组:nexus通过仓库组统一管理多个仓库,简单来说就是我们可以上传私有组件或插件到host以及配置proxy以获取第三方的依赖(配置中央仓库的地址),group会提供一个用户可访问的地址。

添加host:

添加proxy:

**
**

**添加group:
**

3.给当前用户分配权限并且激活当前用户

第三步:将轨迹插件发布到私服

1.连接创建好的group

推荐使用nrm,nrm 是一个 npm 源管理器,允许你快速地在 npm源间切换。

首先全局安装nrm

npm install -g nrm

然后在nrm上添加group源以及host源

nrm add host http://yournexusaddress/nexus/content/repositories/webHost/
nrm add group http://yournexusaddress/nexus/content/groups/web-group/

然后我们来测试下有没有连接上group

nrm use group

然后我们直接npm install pina来看下有没有链接上group

然后我们可以看到在group中已经安装上了如下所示:

2.将轨迹插件发布到私服(发布一定是发布到host仓库)

连接host仓库

nrm use host

登录Nexus账户(这一步至关重要!)

使用命令模式

npm config set email "youremail" //email为nexus账户中的邮箱npm config set always-auth true  //是否进行身份验证 (选填)npm config set _auth "username:password base64" //_auth为账户:密码 比如 zhangsan:zhangsan密码 但是username:password转base64

或者使用修改配置文件模式

_找到系统中.npmrc文件这个文件在全局,会放在/users/${yourname}/.npmrc
_

然后在配置文件中直接添加这两行

base64在线编码地址:base64.us/

写到这里,想必各位看官已经发现问题了,为什么一般我们在发布源为registry.npmjs.org/的时候不需要这样做,而是直接npm login然后输入用户名密码,并且不需要转base64,但是在Nexus上却需要,这其实牵扯到一个Nexus版本问题,Nexus2上没有配置npm Bearer Token权限的地方,但是在Nexus3上是有的如下所示:

设置源为host,然后直接执行npm publish,将轨迹插件发布到私服上

可以看到已经发布成功了,然后我们在Nexus上看下是否已经在group中了

注意!此时我把version改为了1.0.1

第四步:安装使用上传到私服的轨迹插件(使用一定要连接到group/host仓库)

1.安装轨迹插件包

首先我们要设置一下npm源为group或者host

nrm use group

然后我们直接安装私服下的插件(建议安装最新版本)

npm install kc-trail @latest

我们可以看到已经安装成功了,如下所示:

然后我们在项目中看下有没有问题

可以看到没有任何问题!

上面其实有个小问题,为什么我发布多次之后但是group中发布时间还是初始时间呢,如下所示

我理解它只是记录了第一次发布的时候,更新group中的包的时候它并没有去更新时间,所以我建议每次安装私服下的依赖包的时候都安装最新的但是能看到它的最新版本,方法为点开group中上传包的链接

写在最后的

涉及到的npm命令以及发布/安装流程(以我本地服务下的Nexus中的账号为例)

安装nrm添加host/group源

npm install -g nrmnrm add host http://YOURADDRESS/nexus/content/repositories/webHost/nrm add group http://YOURADDRESS/nexus/content/groups/web-group/

发布:

nrm use hostnpm config set email "xxx@kcwl.com"
npm config set always-auth true  npm config set _auth "username:passwordbase64"npm publish

安装使用:

nrm use groupnpm install your-pack @latest