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

相关推荐
代码搬运媛6 小时前
Jest 测试框架详解与实现指南
前端
counterxing7 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq7 小时前
windows下nginx的安装
linux·服务器·前端
之歆8 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜8 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai108088 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
kyriewen10 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
humcomm10 小时前
元框架的工作原理详解
前端·前端框架
canonical_entropy11 小时前
Attractor Before Harness: AI 大规模开发的方法论
前端·aigc·ai编程
zhangxingchao11 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端