在某些情况下,可能需要在没有互联网连接的环境中进行构建或部署。通过提前下载所有依赖,你可以将它们保存在本地,然后在没有网络连接时使用,提高构建或部署的效率。
前端下载依赖
脚本getTzgUrl.js
const { readFileSync, writeFileSync } = require('fs')
const input = readFileSync('./yarn.lock', 'utf-8')
const urlRegex = /https?:\/\/[^\s]+/g;
const urls = input.match(urlRegex);
const modifiedUrls = urls.map(url => url.replace(/"$/, ''));
const prefix = "wget --user 用户名--password 密码"
let res = ''
modifiedUrls.forEach(url => {
res += prefix + url + '\n'
});
writeFileSync('./npm-download.bat', res)
说明:
--user 用户名--password 密码
根据实际情况修改成对应的用户名和密码
yarn.lock
还是package-lock.json
根据实际情况修改,yarn.lock
还是package-lock.json
都是支持的
然后使用node getTzgUrl.js
命令运行改脚本就会得到下面tgz压缩包的脚本
如果是linux
环境,需要把writeFileSync('./npm-download.bat', res)
改成writeFileSync('./npm-download.sh', res)
然后添加运行权限chmox +x npm-download.sh
添加运行权限之后直接运行该脚本./npm-download.sh
windows环境,需要去下载wgwt
下载地址:https://eternallybored.org/misc/wget/
下载完成之后可以配置环境变量 或者 把下载脚本npm-download.bat
和下载的wget.exe
放在统一目录下面,然后双击npm-download.bat
脚本进行下载
下载了之后需要上传到仓库
npm-import.sh
上传到仓库脚本
上传命令
./npm-import.sh -u 用户名 -p 密码 -r 依赖库地址
npm-import.sh
#!/bin/bash
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
# find 查拔tgz文件并执行批量上传
find . -type f -name '*.tgz'| sed "s|^\./||" xargs -I '{}' \
cur1 -u "$USERNAME:$PASSWORD" -X 'POST' -V \
${REPO_URL} \
-H 'accept:application/json' \
-H 'Content-Type:multipart/form-data' \
-F 'npm.asset=@{};type=application/x-compressed';
后端jar包上传到仓库地址
- 将
uploadJar.sh
放置到依赖的最外层根目录下
(注意: 是跟包的最外层目录 (如: 和org.apache.commons.commons-compress;jar:1.14 这个包的 org 目录同层) - 给脚本加执行权限
chmod +x uploadJar.sh
- 执行脚本
./uploadlar-sh -u 用户名 -p 密码 -r 依赖库地址
uploadJar.sh
#!/bin/bash
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
find . -type f -not -path './uploadJar\.sh*' -not -path '*/\.*' | sed "s|^\./||" | xargs -I '{}' curl -k -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;