vue项目打包时按一定的名称规范生成对应的压缩包

在项目部署中经常需要将打包的dist按一定的名称压缩成压缩包,今天记录一下打包时生成压缩包的过程。其中有用到的npm包需要自己安装一下。

js文件放置的目录如下

compress.js内容如下:

// compress.jsimport fs from "fs";
import shell from "shelljs"
import minimist from "minimist"
import archiver from "archiver"
import {useNow, useDateFormat} from '@vueuse/core'/*** 压缩文件夹* @param sourceFolder 待压缩文件夹* @param destZip  压缩后zip文件路径 文件名* @param cb 回调函数* @param subDir 是否包一层原文件名*/
function zipFolder(sourceFolder, destZip, cb, subDir) {let output = fs.createWriteStream(destZip),archive = archiver('zip', {zlib: {level: 9}});output.on('close', () => {cb(destZip, '文件压缩成功');})output.on('error', (err) => {cb(err)})archive.pipe(output);archive.directory(sourceFolder, subDir ? sourceFolder : false);archive.finalize();
}/*** git log* @returns {Promise<unknown>}*/
function getLog() {let _cmd = `git show -s --format=%H`;return new Promise((resolve, reject) => {shell.exec(_cmd, (code, stdout, stderr) => {if (code) {reject(stderr)} else {resolve(stdout)}})})
}async function toZip() {// eslint-disable-next-line no-undefconst args = minimist(process.argv.slice(2));let _gitLog = await getLog();let date = useDateFormat(useNow(), 'YYMMDD'),commit = _gitLog.substring(0, 8),pre = args.pre || '', //项目前缀version = args.version || '',//版本号beta = args.beta || '',//测试版subDir = args.subDir,//压缩是否套一层输出的文件夹 不是设置这个参数即不包一层原文件夹sourceFolder = args.output || 'dist',//打包输出的文件夹destZip = `${pre}-WEB-${version}-${commit}${beta && `-${beta}`}-${date.value}.zip`;zipFolder(sourceFolder, destZip, (err, msg) => {console.log(err, msg)}, subDir);
}toZip();

最后还需要配置一下package.json, 如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157400.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux设置ssh免密登录

ssh连接其他服务器 基本语法 ssh 另一台机器的ip地址 连接后输入连接主机用户的密码&#xff0c;即可成功连接。 输入exit 可以登出&#xff1b; 由于我配置了主机映射所以可以不写ip直接写映射的主机名即可&#xff0c;Linux配置主机映射的操作为 vim /etc/hosts # 我自己…

uniapp-自定义表格,右边操作栏固定

uniapp-自定义表格&#xff0c;右边操作栏固定 在网上找了一些&#xff0c;没找到特别合适的&#xff0c;收集了一下其他人的思路&#xff0c;基本都是让左边可以滚动&#xff0c;右边定位&#xff0c;自己也尝试写了一下&#xff0c;有点样式上的小bug&#xff0c;还在尝试修…

PXI-6608 185745H-02 PXI-6527 185633D-01

PXI-6608 185745H-02 PXI-6527 185633D-01 人工智能技术并不新鲜&#xff0c;但运行它的数据和计算却很新鲜 对于那些对人工智能技术历史感兴趣的人来说&#xff0c;一些今天正在使用的技术从20世纪50年代和60年代就已经存在了。 但是&#xff0c;如果人工智能已经存在了这么…

06 # 手写 map 方法

map 的使用 map 自带循环功能&#xff0c;对数据中的元素进行加工&#xff0c;得到一个加工后的新数据 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数组 <script>var arr [1, 3, 5, 7, 9];var result arr.ma…

芯象导播软件使用NDI协议输入输出

芯象导播软件使用NDI协议输入输出 在之前的文章中&#xff0c;我们介绍了NDI传输协议在OBS中的使用【详见】&#xff0c;今天我们说说在“芯象导播”软件中如何使用NDI。 OBS软件最大的特色就是“开源、免费”&#xff0c;虽然插件众多功能强大&#xff0c;但毕竟不是商用软件…

小程序的使用率不高应该怎么提高?

小程序用完即走的特点对于用户来说很爽&#xff0c;但对于商家来说&#xff0c;如果用户走了就不回来了&#xff0c;即小程序不能被用户反复使用&#xff0c;那就关系到小程序的留存能力&#xff0c;那么&#xff0c;如何才能有效地提高小程序的留存率&#xff1f; 1、利用模块…

STM32F407的系统定时器

文章目录 系统定时器SysTick滴答定时器寄存器STK_CTRL 控制寄存器STK_LOAD 重载寄存器STK_VAL 当前值寄存器STK_CALRB 校准值寄存器 初始化 Systick 定时器SysTick_InitSysTick_CLKSourceConfig delay_us寄存器delay_us库函数delay_xms短时delay_ms长时SysTick_Config 系统定时…

什么是文件安全

文件安全就是通过实施严格的访问控制措施和完美的权限卫生来保护您的业务关键信息不被窥探&#xff0c;除了启用和监控安全访问控制外&#xff0c;整理数据存储在保护文件方面也起着重要作用。通过清除旧的、过时的和其他垃圾文件来定期优化文件存储&#xff0c;以专注于关键业…

激光雷达的特性总结

激光能识别的上下高度范围是多少? 激光雷达是一种典型的束波型传感器,扫描的射线呈束波状,打到物体上是一个光斑,并且距离越远,光斑越大。激光光斑的大小和激光雷达的制造工艺相关,一般来说在10m处光斑的大小可以达到7cm半径的圆。此外还要考虑到同一个光斑打到不同物体…

太阳能电池提效远超33%!美国橡树岭科学家发布量子计算机新研究

​&#xff08;图片来源&#xff1a;网络&#xff09; 美国橡树岭国家实验室&#xff08;ORNL&#xff09;宣布&#xff0c;通过使用Quantinuum H1-1量子计算机&#xff0c;发现了在当前量子系统上提升太阳能电池效率的最佳算法。 该项目由美国能源部基础能源科学办公室资助。…

【ChatGPT从瀑布模式到水母模式】如何赋能软件研发全流程?

【文末送书】今天推荐一本强大工具书《ChatGPT 驱动软件开发&#xff1a;AI 在软件研发全流程中的革新与实践》&#xff0c;本文将从其亮点与结构出发&#xff0c;详细阐发其对于运维、项目经理、程序员等的重要性与益处。 文章目录 导语内容作者简介专家推荐读者对象直播预告文…

AR眼镜定制开发-智能眼镜的主板硬件、软件

AR眼镜定制开发是一项复杂而又重要的工作&#xff0c;它需要准备相关的硬件设备和软件。这些设备包括多个传感器、显示装置和处理器等。传感器用于捕捉用户的动作和环境信息&#xff0c;如摄像头、陀螺仪、加速度计等;显示装置则用于将虚拟信息呈现给用户;处理器用于处理和协调…