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

相关推荐
白帽子黑客杰哥1 天前
CTF Web题目常用考点与解题技巧合集
前端·数据库·web安全·网络安全·ctf·信息收集
许___1 天前
axios使用 CancelToken / AbortController 方法进行取消请求
前端·javascript
LYFlied1 天前
Webpack详细打包流程解析
前端·面试·webpack·node.js·打包·工程化
明朝百晓生1 天前
强化学习[page14]【chapter7】Temporal-Difference Learning (TD learning)
前端·html
我只会写Bug啊1 天前
B站/爱奇艺防录屏防截屏原理及Vue3实战实现
前端·软件开发
蜗牛攻城狮1 天前
前端构建工具详解:Vite 与 Webpack 深度对比与实战指南
前端·webpack·vite·构建工具
IT_陈寒1 天前
Redis 性能翻倍的 5 个冷门技巧,90%开发者都不知道的底层优化!
前端·人工智能·后端
Umi·1 天前
shell 条件测试
linux·前端·javascript
第二只羽毛1 天前
基于Deep Web爬虫的当当网图书信息采集
大数据·开发语言·前端·爬虫·算法