将npm本地包上传到nexus私服的实践

将npm本地包上传到nexus私服的实践

# 1,前言 如何配置 npm 私服,这个问题很早之前就已经研究过,博客也发表过此文章: 使用 nexus3 配置 npm 私有仓库 (opens new window) ,本文来介绍当我们私服配置完毕之后,如何上传到 nexus 私服中。

这个逻辑跟 Python 私服有点类似:

其实用一句话来表述,就是 通过私服拉包的时候,走 group 的代理,从本地上传包的时候,要走 local 的仓库。

接下来就记录一下配置方法并用测试包来验证下。

创建私服的过程这里不详述了,已知现有 npm 私仓,物料信息如下:

group:http://192.168.31.68:8931/repository/npm/ local:http://192.168.31.68:8931/repository/npm-local/ 本文将介绍一个通过本地上传的方式处理包依赖的流程。

# 2,准备 这个配置过程中,如果有一些地方没有配置正确,将会遇到一些错误,这里先介绍能够正常走通的流程,最后再汇总过程中可能会遇到的问题。

首先因为与私服交互需要一个账号,因此我们来创建一个单独的账号来与 npm 私服交互。

nexus 中账号的管理思路是,先创建角色,然后给角色绑定不同的管理权限,接着创建账号,将账号绑定给不同的角色。

先创建角色:

这里创建一个 nx-npm 的角色,该角色拥有 npm 方面所有的权限,这可能是个比较大的权限,我没有测试过上传所需的最小权限,感兴趣的同学可以自行测试一下。

然后创建用户:

基本上都是常规内容,不做过多赘述。

注意给用户绑定 nx-npm 这个角色。

配置 nexus 中安全方面的一个规则,具体操作如下图,如果这步不操作,后边传包的时候会有 401 的错误。

# 3,实践 以上准备工作完成之后,就可以进入传包的实践了。

首先创建一个空的测试包:

$ mkdir eryajf-test && cd eryajf-test

$ npm init -y && touch index.js

12接着登陆认证到私服:

$ npm login --registry=http://192.168.31.68:8931/repository/npm-local/

Username: npm

Password:

Email: (this IS public) npm@eryajf.net

Logged in as npm on http://192.168.31.68:8931/repository/npm-local/.

12345然后执行上传:

$ npm publish --registry http://192.168.31.68:8931/repository/npm-local/

npm notice

npm notice 📦 eryajf-test@1.0.0

npm notice === Tarball Contents ===

npm notice 0 index.js

npm notice 225B package.json

npm notice === Tarball Details ===

npm notice name: eryajf-test

npm notice version: 1.0.0

npm notice package size: 278 B

npm notice unpacked size: 225 B

npm notice shasum: 179052169d980f939dc5051bac456ed6b8f3d217

npm notice integrity: sha512-XcOCpbgz9deAK[...]/5mKTv7o5d8Xg==

npm notice total files: 2

npm notice

+ eryajf-test@1.0.0

12345678910111213141516从这里可以看到已经上传成功了,去浏览器当中查看:

这样就成功将本地的包上传到了 nexus 私服当中。

申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

Copyright 二丫讲梵 (opens new window) 版权所有

# 4,测试 当我们把包成功上传之后,就可以直接通过如下命令测试包的下载:

$ npm i -S eryajf-test@1.0.0 --registry=http://192.168.31.68:8931/repository/npm/

npm notice created a lockfile as package-lock.json. You should commit this file.

npm WARN npm-app2@1.0.3 No description

npm WARN npm-app2@1.0.3 No repository field.

+ eryajf-test@1.0.0

added 1 package in 0.551s

1234567可以看到包已经可以通过私服的 group 正常拉取了。

# 5,报错 如果遇到如下报错:

Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository > Manager"

1 原因是没有启用 npm Bearer Token Realm 参考上文进行启用即可。

如果遇到 401 的报错,则大多是账号密码认证的问题。 # 6,参考 Publishing private NPM packages to Nexus (opens new window)

推荐文章

如何挑選優質的松子 松子的食用方法
365bet网站

如何挑選優質的松子 松子的食用方法

📅 08-25 👁️‍🗨️ 2139
2018俄罗斯世界杯:赛后扫除的日本球迷成了网红
36365最新线路检测

2018俄罗斯世界杯:赛后扫除的日本球迷成了网红

📅 10-07 👁️‍🗨️ 4259
Express/Node 入门
365bet亚洲

Express/Node 入门

📅 02-11 👁️‍🗨️ 2210