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

龙岗网站制作重庆seo教程博客

龙岗网站制作,重庆seo教程博客,富平网站建设,北京做网站找谁本文介绍如何将一个 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/173001.html

相关文章:

  • 公司注册地址和办公地址不一样百度seo排名优化
  • qq音乐如何做mp3下载网站推广哪个app最挣钱
  • 网站建设与网页设计专业的友妙招链接怎么弄
  • 有没有帮忙做问卷调查的网站福州seo关键字推广
  • 做网站主要栏目内经典广告推广词
  • 哈尔滨如何快速建站谷歌关键词工具
  • 吉首网站制作广告公司网站
  • 如何用织梦cms做网站个人免费开发网站
  • 做微商网站发帖免费教程一个自己的网站
  • wordpress 单页面翻页专业的seo排名优化
  • 郑州哪里可以做网站网站技术外包公司
  • 泰州网站建设济南网络营销外包
  • 北京专业做网站互联网营销外包公司
  • 网站对比专业全网优化
  • 自己做网站吗西安seo培训机构
  • 360推广和百度推广哪个好北京自动seo
  • 望城区网站建设发外链平台
  • 长治做网站多少钱郑州seo外包服务
  • 如何做彩票网站的源码seo好学吗入门怎么学
  • 茶社网站开发与设计的开题报告满十八岁可以申请abc认证吗
  • 建个私人网站怎么做企业网站建设需要多少钱
  • 网站难做seo排名影响因素主要有
  • 网站建设培训中心广告公司起名大全最新
  • 杭州网站的制作seo快速排名案例
  • 旅游网站后台html模板免费网站推广群发软件
  • 顺德公益网站制作惠州seo网站管理
  • 网站后期的维护semester怎么读
  • 怎样做网站公司seo网站首页推广
  • 中小型网站建设服务家庭优化大师下载
  • 石家庄市网站建设培训班广东深圳疫情最新情况