将npm包发布在私有仓库(nexus)中

有时候需要将自己写的一些前端项目打包发布到公司内部的nexus仓库中。

在nexus中新建一个 repository

打开nexus,登录以后,按照下图操作

将npm包发布在私有仓库(nexus)中_第1张图片

选择 npm (hosted)

将npm包发布在私有仓库(nexus)中_第2张图片

填写 repository 相关信息

将npm包发布在私有仓库(nexus)中_第3张图片

  1. 这里的 Blob store最好选择为 npm 专属的

在这里插入图片描述

  1. 如果没有需要在Blob Stores新建

在这里插入图片描述

  1. 在Hosted选择:Allow redeploy

将npm包发布在私有仓库(nexus)中_第4张图片

否则在后面上传的时候会报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chgyOblf-1576641112028)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p984)]

npm ERR! code E400
npm ERR! 400 Bad Request - PUT http://xxx.xxx.xxx.xxx:xxxx/repository/npm-hosted/demo-test - Repository does not allow updating assets: npm-hosted

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/wjy/.npm/_logs/2019-12-18T03_09_27_631Z-debug.log

重新查看配置如下:

将npm包发布在私有仓库(nexus)中_第5张图片

  1. 点击Create repository创建

配置npm

查看仓库地址

在 Repositories 列表中选择刚刚建的 npm-hosted ,点击copy

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TdYDl0jh-1576641112029)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p974)]

在弹出的弹框中可以看到仓库地址:
将npm包发布在私有仓库(nexus)中_第6张图片

配置仓库地址

在npm 中配置仓库地址,执行命令:

npm config set registry 仓库地址

验证配置是否正确

执行命令:

npm config list

将npm包发布在私有仓库(nexus)中_第7张图片

即配置正确。

添加nexus权限

Realms菜单中,将npm Bearer Token Realm添加到Active中。

将npm包发布在私有仓库(nexus)中_第8张图片

移动后的结果:

将npm包发布在私有仓库(nexus)中_第9张图片

然后点击Save按钮保存

这里一定要移动,不然会报错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eVLX8Wa9-1576641112031)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p979)]

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

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/wjy/.npm/_logs/2019-12-18T02_29_24_122Z-debug.log

上传nexus

新建一个 demo-test 项目

1.新建一个目录 demo-test,并切换到其中

mkdir demo-test && cd demo-test
  1. 初始化一个项目
npm init

然后一路回车,最后键入y即可

将npm包发布在私有仓库(nexus)中_第10张图片

添加用户

npm adduser -registry 仓库地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4DawlrEU-1576641112033)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p986)]

npm adduser -registry http://xxx.xx.x.x:xxxx/repository/npm-hosted/
Username: admin
Password: 
Email: (this IS public) [email protected]
Logged in as admin on http://xxx.xx.x.x:xxxx/repository/npm-hosted/.

上传包

上传的包一定要确保根目录下有package.json,否则会报错。

第一种方式

执行命令:

npm publish -registry 仓库地址

将npm包发布在私有仓库(nexus)中_第11张图片

demo-test npm publish -registry http://xx.xx.xx.xx:xxx/repository/npm-hosted/
npm notice 
npm notice   [email protected]
npm notice === Tarball Contents === 
npm notice 348B package.json
npm notice === Tarball Details === 
npm notice name:          demo-test                               
npm notice version:       1.0.0                                   
npm notice package size:  320 B                                   
npm notice unpacked size: 348 B                                   
npm notice shasum:        c897041e0aa1cbf68734be9e4058e39490de8eb3
npm notice integrity:     sha512-Seb61XX1ronMM[...]ioQBdXs2fEW+Q==
npm notice total files:   1                                       
npm notice 
+ [email protected]
➜  demo-test 

此时即上传成功。

第二种方式

在package.json 中添加

"publishConfig": {
    "registry": "仓库地址"
  },

即:

将npm包发布在私有仓库(nexus)中_第12张图片

然后执行:

npm publish

验证是否上传成功

将npm包发布在私有仓库(nexus)中_第13张图片

你可能感兴趣的:(#,Angular,#,ES6学习笔记,#,npm报错合集,nexus私库,npm-publish,npm-adduser)