迁移npm包到nexus

背景:外包项目完工后,需要搭建客户开发环境,因此需要将对应的npm开发包迁移到客户nexus

步骤:

1.先从前端工程中的yarn.lock文件中获取组件列表

2.使用python脚本下载组件到本地

3.使用pythons脚本上传npm包到nexus仓库

第2不脚本如下:

python 复制代码
# -*- coding: utf-8 -*-
import os
import requests
import re
# 设置下载文件保存目录
download_dir = "C:\\Users\\onlyo\\Desktop\\LJ\\npmdowlod\\pkg"

# 从文件中读取 URL 列表
url_file = "C:\Users\\onlyo\\Desktop\\LJ\\npmdowlod\\url.txt"

# 创建下载目录(如果不存在)
#os.makedirs(download_dir, exist_ok=True)

# 打开 URL 列表文件
with open(url_file, "r") as file:
    print("Hello, World!1")
    # 逐行读取 URL
    for line in file:
        print(line)
        # 提取 URL 链接部分
        #url = line.strip().split()[1].strip('"')
        url = re.search(r'"(https?://.*?)"', line).group(1)
        print("读取到的url为:"+str(url))
        # 检查 URL 是否以 "https://" 开头
        if url.startswith("http://"):
            # 提取文件名
            filename = url.rsplit("/", 1)[-1]
            #last_slash_index = url.rfind("/")
           # hash_index = url.rfind("\"")

            # 提取子字符串
            #filename = url[last_slash_index + 1 : hash_index]
            # 下载文件
            print("下载文件:", filename)
            response = requests.get(url)
            file_path = os.path.join(download_dir, filename)
            with open(file_path, "wb") as output_file:
                output_file.write(response.content)

第三步脚本如下:

python 复制代码
# -*- coding: utf-8 -*-
import os  
import requests  
import glob  
# 远程Nexus仓库的URL和认证信息  
nexus_url = 'http://192.168.2.230:8081/service/rest/v1/components'  
headers = {  
    'accept': 'application/json',  
    'Content-Type': 'multipart/form-data'  
}  
auth = ('admin', 'admin')  # 替换为你的Nexus仓库的用户名和密码  
  
# 本地npm包的路径和要上传的远程仓库名  
local_path = 'D:\\lj2\\'  # 替换为包含.tgz文件的本地文件夹路径  
remote_repo = 'npm-imbr-hosted'  # 替换为要上传到的远程仓库名称  
  
# 遍历本地文件夹中的.tgz文件  
for tgz_file in glob.glob(os.path.join(local_path, '*.tgz')): 
    print('开始上传'+tgz_file)
    auth = ('admin', 'admin')  # 替换为你的Nexus仓库的用户名和密码    
    url = 'http://192.168.2.230:8081/service/rest/v1/components?repository=npm-imbr-hosted'  
    files = {'file': open(tgz_file, 'rb')}  # 这里替换为你的文件路径  
    response = requests.post(url,auth=auth, files=files)  
    print('完成')
    print(response.text)  # 打印服务器响应
相关推荐
羲云16 分钟前
Claude 越界事件之后:Agent 权限设计为什么不能只靠提示词
前端
行者全栈架构师29 分钟前
【鸿蒙心迹】鸿蒙网络请求架构实战——@ohos.net.http 到 Axios 封装、拦截器与统一错误处理(HarmonyOS 7.x)
前端·算法·架构
全栈Agent 小李36 分钟前
【无标题】
前端·后端·agent·ai编程·全栈·cursor·mcp
羲云37 分钟前
别让 AI 凭记忆做调研:给 WorkBuddy 接上可核验的实时搜索
前端
damoluomu1 小时前
Directus 换掉 GPL 之后,Node.js CMS 到底怎么选?(三)
node.js
deli0071 小时前
连接池到底配多大?QPS 和 RT 算一遍,再跑 1 万次请求实测超时率
前端
风花一世月1 小时前
🏮 我把三坊七巷做成了能飞的 3D 地图(901 个真实建筑轮廓、20 处景点,在线直接玩)
前端
特立独行的猫A1 小时前
用仓颉语言写一个串口调试助手:cj-tauri 实战
前端
小凯在掘金1 小时前
Shadow DOM 和 Virtual DOM ?别再傻傻分不清
前端·html
郑州光合科技余经理1 小时前
本地生活平台搭建:跨业态用户标识怎么贯通
java·开发语言·前端·后端·uni-app·php·ai编程