内网使用nexus3搭建npm私库方法

内网使用nexus3搭建npm私库大致分为下载tgz和批量上传两个步骤。如下。

第一步,批量下载tgz依赖。

  1. 新建一个文件夹,比如download;

  2. 拷贝出项目中package.json或者package-lock.json。放进download文件夹中;

  3. 确保电脑本地已经安装好nodejs,确保nodejs相关环境变量配置成功;

  4. 拷贝download.sh 脚本到downlaod 文件夹中,和package.json同一目录;脚本如下所示:

    bash 复制代码
    echo ">>> 正在下载未压缩依赖... <<<"
    npm i
    echo ">>> 下载完成 <<<"
    echo ">>> 正在下载tgz格式依赖... <<<"
    npm install node-tgz-downloader -g
    download-tgz package-lock package-lock.json
    echo ">>> 下载完成 <<<"
    echo ">>> 正在移动tgz文件... \n"
    mkdir tgz
    find ./tarballs -maxdepth 4 -name "*.tgz" | xargs mv -t ./tgz
    echo ">>> 移动完成 \n"

    文件夹结构如图所示:

  5. 在downlaod文件夹下执行download.sh脚本。Windows环境需要下载git执行shell脚本,linux环境可直接执行脚本;

  6. 在脚本执行后,会下载以来,然后对package-lock.json的rsolve字段进行解析下载tgz包;

  7. 最后,脚本依次执行下载,会相继出现downloading 、complete等字样;

  8. 下载完成后,会在download文件夹下自动创建tgz文件夹,该文件夹下即是所需tgz包;如下图所示:

第二步,批量上传nexus。

  1. 新建upload文件夹;
  2. 登录nexus,找到需要上传的npm-hosted(本地)地址。如下图所示:
  1. 找到批量上传tgz包的接口地址,如下图所示:
  1. 拷贝upload.sh 脚本,放进upload文件夹中;脚本如下所示:55
bash 复制代码
#!/bin/bash
targetDir=./tgz
publishRestful=你的nexusIP/service/rest/v1/components?repository=你的npm-hosted路径
echo ">>> 文件所在目录:$targetDir <<<"
dir=$(ls -l $targetDir | awk '/.tgz$/ {print $NF}')
cd $targetDir
 
for file in $dir
do
  echo ">>> $targetDir/$file 上传开始 \n"
  ret=`curl -u 用户名:密码 -X POST "$publishRestful" -H "Accept: application/json" -H "Content-Type: multipart/form-data" -F "npm.asset=@$file;type=application/x-compressed"`
  echo $ret
  echo ">>> $targetDir/$file 上传完成 \n"
done
  1. 将下载好的tgz文件夹,放进upload文件夹,如下图所示:
  1. 同样在此文件夹下执行upload.sh 脚本;如下图所示:
  1. 脚本自动执行上传,直至结束。

至此上传步骤完毕。

相关推荐
majingming1233 小时前
FUNCTION
java·前端·javascript
A_nanda4 小时前
Vue项目升级
前端·vue3·vue2
SuperEugene4 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
abigale035 小时前
【浏览器 API / 网络请求 / 文件处理】前端文件上传全流程:从基础上传到断点续传
前端·typescript·文件上传·vue cli
Setsuna_F_Seiei5 小时前
AI 对话应用之页面滚动交互的实现
前端·javascript·ai编程
新缸中之脑5 小时前
追踪来自Agent的Web 流量
前端
wefly20175 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
英俊潇洒美少年6 小时前
vue如何实现react useDeferredvalue和useTransition的效果
前端·vue.js·react.js
kyriewen117 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript
英俊潇洒美少年7 小时前
react19和vue3的优缺点 对比
前端·javascript·vue.js·react.js