vue3+vite打包自动生成dist.zip文件

第一步:先安装插件 npm i jszip -D

npm i jszip -D
npm i vite-plugin-compression -D

第二步:在根目录下面创建一个zip.js文件(和vite.config.js同一级)

// eslint-disable-next-line func-names
const plugin = function (fileName = 'yunyingfenxi_2023', output) {const path = require('path')if (!output) output = path.resolve(__dirname, './yunyingfenxi_2023') // ./distTest是根据实际路径而来fileName += '.zip'const makeZip = function () {const path = require('path')const fs = require('fs')const JSZip = require('jszip')const zip = new JSZip()const distPath = path.resolve(output)const readDir = function (zip, dirPath) {// 读取dist下的根文件目录const files = fs.readdirSync(dirPath)files.forEach((fileName) => {const fillPath = path.join(dirPath, './', fileName)const file = fs.statSync(fillPath)// 如果是文件夹的话需要递归遍历下面的子文件if (file.isDirectory()) {const dirZip = zip.folder(fileName)readDir(dirZip, fillPath)} else {// 读取每个文件为buffer存到zip中zip.file(fileName, fs.readFileSync(fillPath))}})}const removeExistedZip = () => {const dest = path.join(distPath, `./${fileName}`)if (fs.existsSync(dest)) {fs.unlinkSync(dest)}}const zipDir = function () {readDir(zip, distPath)zip.generateAsync({type: 'nodebuffer', // 压缩类型compression: 'DEFLATE', // 压缩算法compressionOptions: {// 压缩级别level: 9,},}).then((content) => {const dest = path.join(distPath, `../${fileName}`)removeExistedZip()// 把zip包写到硬盘中,这个content现在是一段bufferfs.writeFileSync(dest, content)})}removeExistedZip()zipDir(distPath)}return {name: 'vite-plugin-auto-zip',apply: 'build',closeBundle() {makeZip()},}
}
module.exports = plugin

第三步:在vite.config.js中引入插件

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import eslintPlugin from 'vite-plugin-eslint'
import viteCompression from 'vite-plugin-compression'
import myPlugin from './zip'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),myPlugin(),viteCompression({threshold: 1024 * 500, // 对大于500kb的文件进行压缩algorithm: 'gzip', // 采用的压缩算法,默认是 gzipext: '.gz', // 生成的压缩包后缀}),eslintPlugin({cache: true,}),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url)),},},base: './',build: {sourcemap: false,outDir: 'yunyingfenxi_2023',rollupOptions: {output: {chunkFileNames: 'assets/js/[name]-[hash].js',entryFileNames: 'assets/jsEntry/[name]-[hash].js', // html引入的js文件assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',},brotliSize: true, // 不统计target: 'esnext',minify: 'esbuild', // 混淆器,terser构建后文件体积更小},},
})

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

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

相关文章

持续增长的背后,艾比森用泛微-千里聆RPA机器人为业务加速

(艾比森全球总部) 艾比森集团始创于2001年,是全球知名的至真LED显示应用与服务提供商。目前旗下设有深圳总部,艾比森东江智造中心,以及艾比森美国、德国、日本、迪拜、俄罗斯、墨西哥、巴西、中国香港等18家海内外公司…

Web应用渗透测试完全指南(二)

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

leetcode刷题详解十四

39. 组合总和 vector<vector<int>> res; vector<int> temp; vector<vector<int>> combinationSum(vector<int>& candidates, int target) {back_tracing(candidates, 0, 0, target);return res; }void back_tracing(vector<int>…

如何使用Windows自带的IIS服务搭建本地站点并远程访问

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xf…

Day43:123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

文章目录 123.买卖股票的最佳时机III思路代码实现 188.买卖股票的最佳时机IV思路代码实现 123.买卖股票的最佳时机III 题目链接 思路 这道题规定了买卖次数只能为2&#xff0c;直接把两次过程分开&#xff0c;分为四层&#xff0c;分别为&#xff1a; 第一次持有股票第一次…

5款最佳替代Sketch软件,第一款简直令人叹为观止!

Sketch是Mac平台上专门为用户界面设计的矢量图形绘制工具。Sketch简单的界面背后有优秀的矢量绘图能力和丰富的插件库。但遗憾的是&#xff0c;Sketch只能在Mac平台上使用和浏览&#xff0c;是本地化工具&#xff0c;云共享功能并不完善。本文盘点了5个Sketch替代软件&#xff…

在windows上使用多个版本的chrome(谷歌)浏览器

1、下载离线安装包&#xff0c;地址为&#xff1a;版本99- https://download.csdn.net/download/xiaozukun/88583844 或&#xff0c;版本121- https://download.csdn.net/download/xiaozukun/88583876 2、下载后解压缩&#xff0c;在解压后的文件下新建名为“user-data”的文…

对c语言的认识(基础语法知识请见笔者之前文章)

底层逻辑&#xff1a; 1.c语言的整体思想&#xff1a;面向过程&#xff0c;而问题的实现过程是解题时的主要难点&#xff0c;与其花时间分析问题结果&#xff0c;不如研究问题的过程 2.变量的初始化与赋值&#xff1a;初始化为变量的初值&#xff0c;通常表示为0或者其他的数&a…

MAVEN冲突解决

MAVEN冲突解决 1.安装下面这个插件 2.安装成功点击pom文件 dependency analyzer标志&#xff0c;说明maven helper插件就安装成功 3.点击dependency analyzer之后就会进入到下面的页面 4.标记红色就是版本冲突&#xff0c;右击complie&#xff0c;排除不是使用的 5.POM 文件…

基于JavaScript的jimp库处理图片,添加绘制点

Jimp 是一个用于在 Node.js 环境下进行图像处理的 JavaScript 库。要在图片上绘制点并控制点的大小和颜色&#xff0c;你可以使用 Jimp 库的相关方法来实现。 这里来看介绍吧&#xff0c;英文不好的找翻译gpt和度娘应该都不错 GitHub - jimp-dev/jimp: An image processing l…

【量子机器学习】量子机器学习的介绍

量子机器学习&#xff1a;解锁未来的计算潜能 随着科技的迅速进步&#xff0c;量子机器学习&#xff08;QML&#xff09;作为量子计算和机器学习的完美融合&#xff0c;为我们带来了前所未有的计算潜能。在这个新兴领域中&#xff0c;量子神经网络&#xff08;QNN&#xff09;…

centos 安装谷歌浏览器

centos安装谷歌浏览器_centos google浏览器_运维小兵的博客-CSDN博客 https://googlechromelabs.github.io/chrome-for-testing/ 谷歌driver下载地址 String url "https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?typeweb&code"code"…

基于深度学习的表情动作单元识别综述

论文标题&#xff1a;基于深度学习的表情动作单元识别综述 作者&#xff1a;邵志文1&#xff0c;2&#xff0c;周 勇1&#xff0c;2&#xff0c;谭 鑫3&#xff0c;马利庄3&#xff0c;4&#xff0c;刘 兵1&#xff0c;2&#xff0c;姚 睿1&#xff0c;2 发表日期&#xff1a…

提供视频会员权益/音频会员权益/生活周边权益/卡密+api接口源码

1、获取卡券特权数据&#xff08;直充、卡券&#xff09; 网关URL&#xff1a;https://router.wikeyun.cn/rest/Quanyi/privilege 参数名 类型 必填 参数说明 id int 否 权益id&#xff0c;不传或传空字符串全部 pro_type int 否 产品类型&#xff0c;不传或传空字…

程序员养生之道:延寿秘诀揭秘

目录 引言&#xff1a; 第一部分&#xff1a;充足的睡眠 第二部分&#xff1a;合理饮食 第三部分&#xff1a;适当的运动 第四部分&#xff1a;保护视力和颈椎 第五部分&#xff1a;心理调节 第六部分&#xff1a;适度娱乐 引言&#xff1a; 在现代社会中&#xff0c;程…

入门学习1

docker命令参考 Docker专题栏目 (java265.com) 一句话就是docker解决了运行环境不一致所带来的问题 第一章 什么是docker 1.1 docker的发展史 1.2 docker国内应用史 1.3 什么是Docker 第二章 了解docker 2.1 docker思想 2.1.1 集装箱 2.1.2 标准化 2.1.3 隔离 2.2 …

软件工程(十)

软件质量 定义 ANSI/IEEE Std 729-1983定义软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体” ISO 8402-1994定义软件质量为“反映实体满足明确和隐含需要的能力的特性的总和”。此处&#xff0c;实体是“可以单独描述和研究的事物”&#xff0c…

iRDMA流量控制总结 - 2

4.0 Priority Flow Control – Fundamentals带优先级的流量控制 - 基础知识 PFC is defined by IEEE Standard 802.1Qbb and is part of the DCB suite of enhancements designed to make Ethernet a more viable, competitive transport in compute and storage environments.…

SQLite数据库

接触到很多的sqlite数据库的内容&#xff0c;主要记录一下&#xff1a; 一些学习链接&#xff1a; https://zhuanlan.zhihu.com/p/604609409?utm_id0 https://blog.csdn.net/QtCompany/article/details/129671584 SQLite Expert的官方下载链接&#xff1a; https://www.sql…

RabbitMQ的Web管理页面

访问页面 http://IP:15672/账号密码默认都是&#xff1a;guest 主页概览 Overview 显示当前RabbitMQ Broker的运行信息、连接信息、集群信息以及配置信息等。 连接 Connections 无论生产者还是消费者&#xff0c;都需要与RabbitMQ建立连接后才可以完成消息的生产和消费&#…