需求:在Nexus Repository Manager中添加一个npm私立服务器
打开官方网址
1 |
这个链接中左侧的help,打开,然后右侧有个可以打开的链接Repository Management With Nexus - free comprehensive book,打开后,你会发现这里是不同版本的文档说明,如下图 |
1 |
然后可以选择你正在试用的Nexus Repository Manager的版本进行查看,我们使用的是3.0版本的,然后在第10章是专门介绍npm私服的。 |
往下拉
点进去(google翻译)
从文档上看共需要创建3个仓库,也就是这三个(如下图)
- 代理仓库
- 私有仓库( 托管仓库 )
- 分组
1.创建代理仓库
2.创建托管仓库
3.创建组
4.创建node-sass代理
3. 设置权限(不可跳过,否则后面npm login报错)
1 2 3 4 5 |
原因:用nexus搭建的npm本地仓库,在发布时报 npm ERR! code E401,原因是没有基础权限,需要登录,用帐号登录时又报E500错误 #错误详情如下 npm ERR! code E401 npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository Manager" |
3.1 检查npm nexus的 Realms设置,把npm Bearer Token Reaim放入Active中,并保存
3.2其次检查一下Nexus Repository Manager上的Anonymous是否开放
4.到这里,npm的私服创建完毕,接下来,前端打包需要要登录还需要几个过程
- 设置registry
- 登录nexus私服
- 验证私服下载
- npm install
5.1 设置registry
1 |
npm config list -l #查看npm默认配置项,最主要的是userconfig,配置文件默认位置 |
1 2 3 |
npm set registry [你的私服地址] npm set sass_binary_site [你的node-sass私服地址] #设置后会在用户根目录下有一个.npmrc文件,文件里记录了这些配置 |
5.2 登录私服
1 2 3 4 5 6 |
#使用npm login登录 npm login Username: Password: #登录成功后会在用户根目录下生成一个.npmrc文件,文件里记录了登录token |
验证当前登录用户,查看当前登录npm的账户
1 |
npm whoami |
401 权限问题(参考)
1 |
https://blog.csdn.net/lqh4188/article/details/107384465 |
5.3 验证私服下载
1 2 3 4 |
随便在一个目录下进入, 然后执行 npm –loglevel info install grunt 看看是够能够下载成功,只是下载成功是不够,还要看下,是不是从你的npm私服中进行下载的。 |
验证是否是从npm私服中下载的。
1 |
npm --loglevel info install grunt |
npm一键登录脚本(dockerfile 打包镜像用起来非常的方便,在镜像内部执行登录私服)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/bin/bash registry="http://192.168.1.121:8081/repository/npm-all/" #私服地址 nodesaas="http://192.168.1.121:8081/repository/npm-node-sass/" #node-saas地址 username="admin" password="123456" params='{"name": "'$username'", "password": "'$password'" }' loginResult=$(curl -s \ -H "Accept: application/json" \ -H "Content-Type:application/json" \ -X PUT --data "$params" \ "$registry-/user/org.couchdb.user:$username" ) tokenVal=$loginResult if [[ $tokenVal == *token* ]] then tokenVal=${tokenVal#*token\":\"} tokenVal=${tokenVal/\"\}/} else echo "login fail!" echo $loginResult fi authRegistryPath=${registry/https:\/\//} npm set registry $registry npm set sass_binary_site $nodesaas npm set //$authRegistryPath:_authToken=$tokenVal echo $tokenVal echo "//$authRegistryPath:_authToken=$tokenVal" |
- 本文固定链接: https://www.yoyoask.com/?p=6929
- 转载请注明: shooter 于 SHOOTER 发表