重庆网站建设seo,平台运营工作内容,网站建设安全性,个人微信公共号可以做微网站么【问题背景】
用Nexus搭建了内网的依赖仓库#xff0c;需要将前端工程中node_modules中的依赖上传到Nexus上#xff0c;但是node_modules中的依赖已经是解压后的状态#xff0c;如果直接机械地将其简单地打包上传到Nexus#xff0c;那么无法通过npm install下载使用。故有…【问题背景】
用Nexus搭建了内网的依赖仓库需要将前端工程中node_modules中的依赖上传到Nexus上但是node_modules中的依赖已经是解压后的状态如果直接机械地将其简单地打包上传到Nexus那么无法通过npm install下载使用。故有此文。
【解决思路】
前端工程中的所有npm依赖信息已经记录在package-lock.json文件中包括依赖的下载地址所以可以直接根据package-lock.json中记录的依赖地址逐个下载依赖的原始包然后再上传到Nexus对应的仓库中。
【前置条件】
Nexus上已创建好hosted类型的npm仓库假设起名为npm-local本地前端工程所在PC可以连接互联网本地前端工程已执行npm install且已生成package-lock.json
【编写脚本】
下述的NodeJS脚本可以下载package-lock.json文件中的依赖将该脚本保存到一个名为downloadNpmPackage.js的文件中
const fs require(fs);
const path require(path);
const request require(request);
// 指定根据package-lock.json中记录的信息下载依赖
const packageLock require(./package-lock.json);
// 指定将依赖下载到当前目录下的npm-dependencies-tgz目录
const downUrl ./npm-dependencies-tgz;if (!fs.existsSync(downUrl)) {fs.mkdirSync(downUrl);
}// 收集依赖的下载路径
const tgz [];
for (let pkg in packageLock.dependencies) {let tgzUrl packageLock.dependencies[pkg][resolved];tgz.push(tgzUrl);
}// 逐个下载
tgz.forEach((url) {const outUrl url.split(/).pop()let outUrl2 [outUrl]if(outUrl.indexOf(?) ! -1){outUrl2 outUrl.split(?)}const outputDir path.join(downUrl, outUrl2[0])let receivedBytes 0;let totalBytes 0;const req request({method: GET,uri: url});req.on(response, function(data) {totalBytes parseInt(data.headers[content-length]);});req.on(data, function(chunk) {receivedBytes chunk.length;showProgress(receivedBytes, totalBytes, outUrl2[0]);});req.pipe(fs.createWriteStream(outputDir));
});// 依赖下载进度显示
function showProgress(received, total, filePath) {const percentage ((received * 100) / total).toFixed(2);process.stdout.write(${filePath} 下载进度${percentage}% (${received}/${total} 字节)\r);if (received total) {console.log(\n${filePath} 下载完成);}
}下述Bash脚本可以将下载好的前端依赖上传到Nexus上将该脚本保存到名为UploadnpmPackage.sh的文件中。
#!/bin/bash# 获取命令行参数
while getopts :r:u:p: opt; docase $opt inr) REPO_URL$OPTARG;;u) USERNAME$OPTARG;;p) PASSWORD$OPTARG;;esac
done# find 并批量上传
find . -type f -name *.tgz | sed s|^\./|| | xargs -I {} \
curl -u $USERNAME:$PASSWORD -X POST -v \${REPO_URL} \-H accept: application/json \-H Content-Type: multipart/form-data \-F npm.asset{};typeapplication/x-compressed ;
【上传依赖】
1.将NodeJs脚本downloadNpmPackage.js置于前端工程目录下且与package-lock.json文件同级 2.在当前目录运行Node命令 node downloadNpmPackage.js
等待程序下载依赖包 下载完成后会在package-lock.json同级目录生成一个名为npm-dependencies-tgz的文件夹 里面存放的是当前工程所有依赖的tgz文件 将npm-dependencies-tgz文件夹打包成tar压缩包。
3.z至此上一步压缩的tar包和名为UploadnpmPackage.sh的shell脚本如下可以将这俩发给负责依赖上传的同事由他们完成后面的上传操作。 4.上传依赖的同事收到上述两个文件后解压npm-dependencies-tgz.tar压缩包得到npm-dependencies-tgz目录将UploadnpmPackage.sh剪切到npm-dependencies-tgz目录下与所有tgz依赖包同级 5.若是linux操作系统则需要使用如下命令将脚本中的换行符进行转换 dos2unix UploadnpmPackage.sh
若没有dos2unix则需要安装一下sudo yum install dos2unix。如果是windows则跳过本步。
6.在npm-dependencies-tgz目录下使用如下命令运行脚本UploadnpmPackage.sh将依赖包上传到nexus上注意红字部分根据Nexus的实际情况填写 sh UploadnpmPackage.sh -u admin -p nexusAdmin2023 -r http://172.24.105.249:8089/service/rest/v1/components?repositorynpm-local
7.登录Nexus网页查看到npm-local仓库下已经存在刚才上传的依赖了 【使用依赖】
1.完成上述上传操作后查看并复制npm-local仓库地址 9.CI工具中配置依赖拉取地址为上述复制的地址http://172.24.105.249:8089/repository/npm-local/。或者离线编译前端源码时可以使用如下命令设置npm仓库地址 npm config set registryhttp://172.24.105.249:8089/repository/npm-local/
10.到此便可正常运行npm install安装依赖了。 文章转载自: http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.dtzxf.cn.gov.cn.dtzxf.cn http://www.morning.ybyln.cn.gov.cn.ybyln.cn http://www.morning.xphcg.cn.gov.cn.xphcg.cn http://www.morning.rgtp.cn.gov.cn.rgtp.cn http://www.morning.jmwrj.cn.gov.cn.jmwrj.cn http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn http://www.morning.bnpn.cn.gov.cn.bnpn.cn http://www.morning.dxzcr.cn.gov.cn.dxzcr.cn http://www.morning.pgjyc.cn.gov.cn.pgjyc.cn http://www.morning.plwfx.cn.gov.cn.plwfx.cn http://www.morning.qcnk.cn.gov.cn.qcnk.cn http://www.morning.zrpbf.cn.gov.cn.zrpbf.cn http://www.morning.cjsnj.cn.gov.cn.cjsnj.cn http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com http://www.morning.yrdkl.cn.gov.cn.yrdkl.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.frpfk.cn.gov.cn.frpfk.cn http://www.morning.twwts.com.gov.cn.twwts.com http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn http://www.morning.lmyq.cn.gov.cn.lmyq.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.hmdn.cn.gov.cn.hmdn.cn http://www.morning.mhfbf.cn.gov.cn.mhfbf.cn http://www.morning.flfdm.cn.gov.cn.flfdm.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.cwknc.cn.gov.cn.cwknc.cn http://www.morning.coffeedelsol.com.gov.cn.coffeedelsol.com http://www.morning.qqnjr.cn.gov.cn.qqnjr.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.kztpn.cn.gov.cn.kztpn.cn http://www.morning.jmdpp.cn.gov.cn.jmdpp.cn http://www.morning.wcgcm.cn.gov.cn.wcgcm.cn http://www.morning.xsymm.cn.gov.cn.xsymm.cn http://www.morning.lqws.cn.gov.cn.lqws.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.clgbb.cn.gov.cn.clgbb.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.swwpl.cn.gov.cn.swwpl.cn http://www.morning.lzqxb.cn.gov.cn.lzqxb.cn http://www.morning.mhcys.cn.gov.cn.mhcys.cn http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn http://www.morning.gzzncl.cn.gov.cn.gzzncl.cn http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn http://www.morning.sqgqh.cn.gov.cn.sqgqh.cn http://www.morning.jxgyg.cn.gov.cn.jxgyg.cn http://www.morning.ylklr.cn.gov.cn.ylklr.cn http://www.morning.ymwcs.cn.gov.cn.ymwcs.cn http://www.morning.lynkz.cn.gov.cn.lynkz.cn http://www.morning.fbpdp.cn.gov.cn.fbpdp.cn http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn http://www.morning.llqky.cn.gov.cn.llqky.cn http://www.morning.gnmhy.cn.gov.cn.gnmhy.cn http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.dblfl.cn.gov.cn.dblfl.cn http://www.morning.xnflx.cn.gov.cn.xnflx.cn http://www.morning.xyrss.cn.gov.cn.xyrss.cn http://www.morning.lcjw.cn.gov.cn.lcjw.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.rrqgf.cn.gov.cn.rrqgf.cn http://www.morning.fbqr.cn.gov.cn.fbqr.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn http://www.morning.mkxxk.cn.gov.cn.mkxxk.cn http://www.morning.cwtrl.cn.gov.cn.cwtrl.cn http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn http://www.morning.rbkgp.cn.gov.cn.rbkgp.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.chzqy.cn.gov.cn.chzqy.cn http://www.morning.jhgxh.cn.gov.cn.jhgxh.cn http://www.morning.mdfxn.cn.gov.cn.mdfxn.cn http://www.morning.bbtn.cn.gov.cn.bbtn.cn http://www.morning.rgqnt.cn.gov.cn.rgqnt.cn http://www.morning.rrxnz.cn.gov.cn.rrxnz.cn http://www.morning.pwksz.cn.gov.cn.pwksz.cn http://www.morning.xbnkm.cn.gov.cn.xbnkm.cn http://www.morning.jqzns.cn.gov.cn.jqzns.cn