基于Nexus搭建npm私服的完整指南
创作时间:
作者:
@小白创作中心
基于Nexus搭建npm私服的完整指南
引用
CSDN
1.
https://blog.csdn.net/GuoyangGuo/article/details/141192820
本文将详细介绍如何在Nexus上搭建npm私服,包括创建私库、收集依赖、批量上传以及使用私服的完整流程。通过本文,你将能够掌握在内网环境中搭建和使用npm私服的方法,从而更好地管理项目依赖。
引言
在前面的教程中,我们已经通过Nexus搭建了Maven私服,并通过脚本将本地依赖文件批量上传到私服中。本文将继续介绍如何通过Nexus搭建npm私服,并通过脚本将本地依赖文件同步到私服中。
创建npm私库
- 创建一个npm(hosted)类型的私库
- 创建一个npm(group)仓库组对外服务,将本地的仓库npm-hosted添加到仓库组中。如果是外网情况,可以在创建一个proxy类型的仓库添加在仓库组中。
收集npm依赖
- 找一个依赖比较多的项目(尽量一次性同步大部分的依赖,后面进行相应补充就行),在有外网的环境中对代码进行编译生成
package-lock.json。 - 打开
package-lock.json,从resolved字段中获取所有的tgz文件下载链接。 - 使用
node-tgz-downloader工具包下载所有依赖的tgz文件:
- 安装
node-tgz-downloader:npm install node-tgz-downloader -g - 下载tgz文件:
download-tgz package-json path/to/package.json - 默认会在当前目录下生成一个
tarballs文件夹,下载好的tgz都位于这个文件夹中。
编写脚本批量收集并上传
Nexus提供了上传单个依赖组件的API,我们可以通过这个API进行批量上传。
将上述步骤编写成脚本,完成安装node-tgz-downloader -> 自动下载依赖 -> 收集tgz -> 自动上传到私服。
- 创建一个文件夹来存放执行脚本、
package.json和生成的临时文件。
download_tgz.sh
#!/bin/bash
echo ">>> 开始下载项目依赖... <<<"
npm install
echo ">>> 项目依赖下载完成 <<<"
echo ">>> 开始安装 node-tgz-downloader <<<"
npm install node-tgz-downloader -g
echo ">>> node-tgz-downloader 安装完成 <<<"
echo ">>> 开始收集tgz文件... <<<"
download-tgz package-json ./package.json
mkdir tgz
find ./tarballs -maxdepth 4 -name "*.tgz" -exec mv {} ./tgz/ \;
echo ">>> tgz文件收集完成 <<<"
echo ">>> 清理中间文件 <<<"
rm -rf ./node_modules
rm -rf ./tarballs
echo ">>> 中间文件结束 <<<"
upload.sh
#!/bin/bash
# 替换下列 nexus 信息为真实信息
## nexus 账号
NEXUS_USER=admin
## nexus 密码
NEXUS_PWD=admin123
## 上传REST API repository后面要换成自己的仓库名称
UPLOAD_COMPONENT_API=10.0.0.3:8081/service/rest/v1/components?repository=npm-hosted
TGZ_DIR=./tgz
dir=$(ls -l $TGZ_DIR | awk '/.tgz$/ {print $NF}')
cd $TGZ_DIR
for file in $dir
do
echo ">>> $TGZ_DIR/$file 开始上传到npm私服 \n"
# 替换
resp=`curl -u $NEXUS_USER:$NEXUS_PWD -X POST "$UPLOAD_COMPONENT_API" -H "Accept: application/json" -H "Content-Type: multipart/form-data" -F "npm.asset=@$file;type=application/x-compressed"`
echo resp
echo ">>> $TGZ_DIR/$file 上传完成 \n"
done
- 先执行
download_tgz.sh脚本收集tgz,在再执行upload.sh上传到npm私服。 - 执行
download_tgz.sh:sh download_tgz.sh - 执行
upload.sh:
记得替换脚本中nexus的相关信息。sh upload.sh - 可通过私服仓库对应的数量变化判断上传情况。
使用私服
创建角色-用户
- 创建角色,创建一个前端开发者的角色npm-publisher,并赋予
npm-hosted的读取、添加和修改权限:
nx-repository-view-npm-npm-hosted-addnx-repository-view-npm-npm-hosted-editnx-repository-view-npm-npm-hosted-read
- 创建用户,添加一个用户,并赋予npm-publisher角色。
- 设置Realms,添加npm Bearer Token Realm。
配置私服地址
添加私服地址
可通过下面两种方式进行配置,其中nrm方式需要先安装nrm:
- 通过nrm添加私服:
nrm add nexus http://10.0.0.3:8081/repository/npm-repo/ - 通过npm配置私服地址:
设置为默认的仓库。npm config set registry http://10.0.0.3:8081/repository/npm-repo/
登录私服
通过
npm login
登录私服,输入用户名、密码,即可登录成功。
从私服下载依赖
如果已经设置默认registry为私服地址,可以直接使用npm i。如果没有设置,可以指定私服地址:
npm i axios --registry http://10.0.0.3:8081/repository/npm-repo/
上传依赖到私服本地仓库
构建一个package
- 通过
npm init创建一个包,过程中需要填写参数如下:
- package name(名称)
- version(版本)
- description(描述)
- entry point(主文件也就是入口地址)
- test command(测试命令,可以先不指定)
- git repository(git地址,这样就可以从npm官网直接点到git上,可以先不指定)
- keywords(关键字,用于搜索)
- author(作者)
- license: (ISC)(包循的开源协议)
通过npm publish发布包
- 登录到私服本地仓库:
npm login --registry=http://10.0.0.3:8081/repository/npm-hosted - 发布package到私服:
npm publish -registry http://10.0.0.3:8081/repository/npm-repo - 查看仓库上传成功。
结语
至此,在Nexus中搭建npm私服成功。本文介绍了如何搭建私服,并将本地package同步到私服上,另外演示了如何在本地使用私服下载和上传package。通过本文,你将能够掌握在内网环境中搭建和使用npm私服的方法,从而更好地管理项目依赖。
热门推荐
大寒节气:传统习俗里的温暖记忆
大寒至,鸡汤香:南京人的冬日温暖
3000点以下定投正当时:专家解读与实战经验
智启边界,聪明之外,是智慧的修行
土地纠纷处理指南:派出所如何处理、邻里纠纷解决方法及告知书撰写要点
从零开始:普通人如何实现财务自由?
《水调歌头》刷屏背后:千年文化的情感共鸣
特应性皮炎治疗指南:四大类药物配合日常护理
“薪火梓坑,红韵天门” 探索思想政治教育新模式
燕麦菠菜等五种食物,可辅助缓解皮炎湿疹症状
过敏性皮炎防治指南:医生详解病因与治疗方案
双十一前夕:添可友望洗地机大比拼,哪个更值得买?
婺源油菜花2月20日绽放,3月中旬迎来最佳摄影期
蛟龙行动上演“保密”营销,潜艇题材首秀引期待
《哪吒之魔童闹海》角色设计揭秘:东方美学与创意的完美融合
《哪吒之魔童闹海》第七场戏特效揭秘:锁链大战有多难?
基金投资新手必看:如何规避风险?
资产组合理论教你新手理财避坑
新手理财入门:银行储蓄、货币基金、国债怎么选?
沈阳站至北站出行选择:地铁公交打车优劣分析
周末出行必看:沈阳站至北站地铁、公交、打车全攻略
基克拉泽斯文化:古希腊文明源头的女性崇拜与航海传统
罗平油菜花海游火爆,带动蜂蜜菜油年产值超6亿
《超能飞行队》:飞行模式下的最佳单机游戏选择
欠款六万的心理自救指南
适度宽松政策下的个人理财攻略
撒贝宁穿越大唐对话诗人,央视节目让古诗词学习不再枯燥
3000元以上有线入耳耳机选购指南:器乐、人声、杂食三类推荐
耳机充不进去电的可能原因及处理方法探究
高刷新率显示器:告别眼疲劳,畅享视觉新体验