tgz包批量下载脚本

内网中,无法直接下载依赖包,可提前在有网环境中提前下载好package.json中的所有依赖的tgz包,然后再内容中直接通过tgz安装依赖包,以下脚本可以直接执行

#!/bin/bash

echo ">>> 开始并行收集tgz文件... <<<"

PRO_PATH="./"

REGISTRY="https://registry.npmmirror.com"

DIR_NAME="tgz-folder"

MAX_CONCURRENT=4 # 最大并发数

创建目标目录

mkdir -p $DIR_NAME

函数:下载单个包

download_package() {

local package=$1

echo "开始下载: $package"

if cd DIR_NAME \&\& npm pack "package" --registry=$REGISTRY > /dev/null 2>&1; then

echo "✓ 成功: $package"

cd ..

return 0

else

echo "✗ 失败: $package"

cd ..

return 1

fi

}

导出函数,用于并行处理

export -f download_package

export DIR_NAME REGISTRY

提取依赖包列表

PACKAGES=$(node -e "

const pkg = require('./package.json');

const allDeps = {...pkg.dependencies, ...pkg.devDependencies};

Object.entries(allDeps).forEach(([name, version]) => {

if (typeof version === 'string' &&

!version.startsWith('file:') &&

!version.startsWith('link:') &&

!version.startsWith('git+') &&

!version.startsWith('http')) {

console.log(name + '@' + version);

}

});

")

并行下载

echo "PACKAGES" \| xargs -I {} -P MAX_CONCURRENT bash -c 'download_package "$@"' _ {}

echo ">>> tgz文件收集完成 <<<"

echo ">>> 文件保存在 ./$DIR_NAME/ 目录 <<<"

安装文件夹中的所有 tgz 包

npm install ./tgz-bfd/*.tgz

相关推荐
kyriewen111 天前
代码写成一锅粥?这5种设计模式让你的项目“起死回生”
前端·javascript·设计模式·typescript·ecmascript·html5
ywlovecjy1 天前
【Nginx 】Nginx 部署前端 vue 项目
前端·vue.js·nginx
Alice-YUE1 天前
AI对话为什么需要RAG
前端·语言模型·rag
C澒1 天前
IntelliPro 企业级产研协作平台:低代码实时预览与可视化编辑技术调研
前端·低代码·ai编程
霍理迪1 天前
TS类型断言和类型守卫
前端
木斯佳1 天前
前端八股文面经大全:京东前端实习一面(2026-04-16)·面经深度解析
前端
chenxu98b1 天前
前端的dist包放到后端springboot项目下一起打包
前端·spring boot·后端
Bigger1 天前
第十章:我是如何剖析 CLI 里的终极 Agent 能力的(电脑控制与浏览器接管)
前端·claude·源码阅读
kyriewen1 天前
代码写成一锅粥?这5种设计模式让你的项目“起死回生”
前端·javascript·设计模式
蓝色的雨1 天前
基于Babylonjs的WEBGPU渲染器源码架构
前端·javascript