当前位置: 首页 > wzjs >正文

wordpress 站长工具国内广告联盟平台

wordpress 站长工具,国内广告联盟平台,安阳做网站电话,南充建设企业网站本文介绍如何将一个 Nexus 特定仓库中的 npm 包内容迁移到另一个 Nexus 特定仓库。此过程适用于需要重构仓库结构或合并仓库的场景。 迁移脚本 以下是完整的迁移脚本,它会自动完成以下操作: 从源仓库获取所有 npm 包列表下载每个包的 .tgz 文件解压并…

本文介绍如何将一个 Nexus 特定仓库中的 npm 包内容迁移到另一个 Nexus 特定仓库。此过程适用于需要重构仓库结构或合并仓库的场景。

迁移脚本

以下是完整的迁移脚本,它会自动完成以下操作:

  1. 从源仓库获取所有 npm 包列表
  2. 下载每个包的 .tgz 文件
  3. 解压并重新发布到目标仓库
#!/bin/bash# === 配置区域 ===
NEXUS_URL="https://nexus.test.com"
USERNAME="test"
PASSWORD="123456"SOURCE_REPO="npm-a"
TARGET_REPO="npm-b"SOURCE_REGISTRY="$NEXUS_URL/repository/$SOURCE_REPO/"
TARGET_REGISTRY="$NEXUS_URL/repository/$TARGET_REPO/"TMP_DIR="/tmp/npm-migrate"
mkdir -p "$TMP_DIR"
cd "$TMP_DIR" || exit 1
# =================# ✅ 日志处理:同时输出到终端和日志文件
LOG_FILE="$TMP_DIR/npm-migrate.log"
exec > >(tee -a "$LOG_FILE") 2>&1log() {echo "[$(date '+%F %T')] $*"
}log "🚀 启动 npm 仓库迁移脚本"# 遇到错误不中断脚本
set +eTOKEN=""while true; dolog "📥 获取包列表,continuationToken=$TOKEN"RESPONSE=$(curl -s -u "$USERNAME:$PASSWORD" \"$NEXUS_URL/service/rest/v1/components?repository=$SOURCE_REPO${TOKEN:+&continuationToken=$TOKEN}")ITEM_COUNT=$(echo "$RESPONSE" | jq '.items | length')log "📦 本页包含 $ITEM_COUNT 个包"echo "$RESPONSE" | jq -c '.items[]' | while read -r item; doname=$(echo "$item" | jq -r '.assets[0].path' | cut -d/ -f1)version=$(echo "$item" | jq -r '.version')log "➡️ 处理 $name@$version"tarball_url="${SOURCE_REGISTRY}${name}/-/${name}-${version}.tgz"tarball_file="${name}-${version}.tgz"log "🌐 下载包: $tarball_url"curl -s -u "$USERNAME:$PASSWORD" -O "$tarball_url"if [[ -f "$tarball_file" ]]; thentar -xzf "$tarball_file"pkg_dir="package"# 可选:检查是否已存在(加快速度)EXISTS=$(curl -s -u "$USERNAME:$PASSWORD" "$TARGET_REGISTRY$name" | grep "\"$version\"")if [[ -n "$EXISTS" ]]; thenlog "✅ $name@$version 已存在于目标仓库,跳过发布"elselog "🚀 发布 $name@$version$TARGET_REPO"npm publish "$pkg_dir" --registry "$TARGET_REGISTRY" --forceif [[ $? -ne 0 ]]; thenlog "❌ 发布失败:$name@$version"elselog "✅ 发布成功:$name@$version"fifirm -rf "$tarball_file" "$pkg_dir"elselog "❌ 下载失败:$tarball_url"fidone# 分页处理TOKEN=$(echo "$RESPONSE" | jq -r '.continuationToken')if [[ "$TOKEN" == "null" || -z "$TOKEN" ]]; thenlog "✅ 所有包处理完成,无更多分页"breakelselog "➡️ 获取下一页 continuationToken=$TOKEN"fi
donelog "🏁 所有迁移已完成"

~/.npmrc 中配置目标仓库的 auth 认证信息,因为发布包要使用,内容如下示例:

registry=https://nexus.test.com/repository/npm-b/
//nexus.test.com/repository/npm-b/:_auth=c45h2312asmh3dsfYW3fassaawRAxMde=
//nexus.test.com/repository/npm-b/:always-auth=true

其中 _auth 后面的内容是对 “账号:密码” 进行base64之后的字符串,注意账号密码使用英文冒号分隔拼接在一起后统一 base64。

使用说明

  • 确保已安装 curl, jq, npmtar 工具

  • 确保有源仓库和目标仓库的访问权限

执行脚本:

chmod +x migrate.sh
./migrate.sh

注意事项

  • 此脚本仅处理源仓库中的第一页数据(默认100条记录),如需处理更多数据,需要添加分页逻辑

  • 迁移过程中会保留原始包的版本信息

  • 使用 --force 参数强制发布,可能会覆盖目标仓库中已存在的同名包

  • 脚本执行完毕后会自动清理临时文件


(END)

http://www.dtcms.com/wzjs/30417.html

相关文章:

  • 网站动态效果用什么软件做的思亿欧seo靠谱吗
  • 劳务公司简介模板四平网站seo
  • 滨湖区建设局网站优化关键词规则
  • 社区做图网站有哪些seo线下培训机构
  • 长春火车站电话百度关键词排名快速排名
  • 7天精通网站建设实录简介242今日足球赛事推荐
  • 住房和城乡规划建设局网站交换友情链接的渠道
  • 白城学做网站青岛网络推广公司哪家好
  • 设计师网站有哪些网络推广专员
  • 网站后台做链接百度知道一下
  • 网站平台怎么做的好处公众号推广引流
  • 做有声小说网站重庆seo俱乐部联系方式
  • 个人网站相册怎么做百度推广有哪些售后服务
  • 为什么要做手机网站教育培训机构平台
  • 怎样建设赌博网站seo是一种利用搜索引擎的
  • 宜兴市建设局网站百度seo建议
  • wordpress更新了固定连接文章失效太原高级seo主管
  • 苏州网络推广电话深圳市企业网站seo营销工具
  • 服务好的武汉网站建设中国行业数据分析网
  • 高端自适应网站开发无锡网络推广平台
  • 两个域名同一个网站做优化重庆seo技术教程
  • 网站建设步骤详解百度搜图片功能
  • 网站开发工具以及优缺点怎么建造自己的网站
  • 做网站 免费字体做好网络推广
  • 做网站怎么开发客户长春网站关键词排名
  • 做科技申报看什么网站线上营销推广公司
  • 微信网页版如何识别二维码seo排名点击器原理
  • 丽江建网站seo站点
  • wap网站开发用什么语言今日热搜榜官网
  • 政府网站建设与管理规范免费行情软件网站大全