内网使用nexus搭建npm私服后,肯定是要上传一些常用的开发包的
一、外网下载需要的包
(1)创建一个package.json,并写上自己想要的包及其版本,如想要下载5.3.3的echarts
{
"dependencies": {
"echarts": "5.3.3"
}
}
(2)利用node-tgz-downloader下载需要的依赖的tgz格式的包,这里可以参考使用我创建的脚本,在package.json同目录下创建一个文本,复制粘贴以下代码,保存,将文本的后缀改成.sh
echo ">>> 正在下载未压缩依赖... <<<"
npm i
echo ">>> 下载完成 <<<"
echo ">>> 正在下载tgz格式依赖... <<<"
npm install node-tgz-downloader -g
download-tgz package-json package.json
echo ">>> 下载完成 <<<"
echo ">>> 正在移动tgz文件... \n"
mkdir tgz
find ./tarballs -maxdepth 4 -name "*.tgz" | xargs mv -t ./tgz
echo ">>> 移动完成 \n"
echo ">>> 正在删除无用依赖... <<<"
rm -r tarballs
rm -r node_modules
echo ">>> 外网操作完成 \n"
文件结构如下:
双击运行脚本(windows环境下.sh脚本需要git bash才能运行,装个git就行,都搞npm私服了,一般都会装git吧)
脚本运行后,目录下将多出一个tgz文件夹,里面便是下载好的tgz格式的依赖
(2)内网上传依赖到npm私服
将tgz文件夹拷贝至内网电脑,在同目录下创建一个脚本(地址、用户名、密码换成自己的)
#!/bin/bash
targetDir=./tgz
publishRestful=你的npm私服的rest接口地址(参考地址,自行修改:ip:端口/service/rest/v1/components?repository=私服名称)
echo ">>> 文件所在目录:$targetDir <<<"
dir=$(ls -l $targetDir | awk '/.tgz$/ {print $NF}')
cd $targetDir
for file in $dir
do
echo ">>> $targetDir/$file 上传开始 \n"
ret=`curl -u 你的私服用户名:你的私服密码 -X POST "$publishRestful" -H "Accept: application/json" -H "Content-Type: multipart/form-data" -F "npm.asset=@$file;type=application/x-compressed"`
echo $ret
echo ">>> $targetDir/$file 上传完成 \n"
done
目录结构如下:
运行脚本,结束。