二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Nexus系列文章

    • 前言
    • nexus的安装
    • 使用nexus3配置docker私有仓库
    • 使用nexus3配置maven私有仓库
    • 使用nexus3配置npm私有仓库
    • 使用nexus3配置yum私有仓库
    • 使用nexus3配置Python私有仓库
    • 使用nexus3配置golang私有仓库
    • maven私服nexus2-14-5迁移到nexus3-7-1
    • maven上传jar包以及SNAPSHOT的一个坑
    • Gradel上传本地包的一些坑及注意点
    • go1-12与1-14之私服使用的差异与变化
    • 通过命令行往python私仓传包
    • 关于yum仓库往nexus私服传包等实践
    • 将maven本地包上传到nexus私服的实践
    • 将npm本地包上传到nexus私服的实践
      • 1,前言
      • 2,准备
      • 3,实践
      • 4,测试
      • 5,报错
      • 6,参考
    • nexus2.x升级到3.x之后仓库地址改变的问题探索
    • 关于gradle中plugins依赖未走私服导致编译失败的原因探析
  • Jenkins系列文章

  • ELK笔记

  • Kubernetes笔记

  • LLM专题

  • 系列专题
  • Nexus系列文章
二丫讲梵
2022-09-20
目录

将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
1
2

接着登陆认证到私服:

$ 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/.
1
2
3
4
5

然后执行上传:

$ 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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

这样就成功将本地的包上传到了 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
1
2
3
4
5
6
7

可以看到包已经可以通过私服的 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)
微信 支付宝
上次更新: 2024/09/26, 21:41:44
将maven本地包上传到nexus私服的实践
nexus2.x升级到3.x之后仓库地址改变的问题探索

← 将maven本地包上传到nexus私服的实践 nexus2.x升级到3.x之后仓库地址改变的问题探索→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式