前端打包自动压缩为zip--archiver
安装依赖
pnpm add archiver @types/archiver
/vitePlugins/autoBuildZip.ts
import { Plugin } from 'vite';
import archiver from 'archiver';
import fs from 'fs';const compressFolder = (folderPath: string, outputFilePath: string) => {const output = fs.createWriteStream(`${__dirname}/../${outputFilePath}.zip`);const archive = archiver('zip', {zlib: { level: 9 },});output.on('close', function () {const size = (archive.pointer() / 1024 / 1024).toFixed(2);console.log(`---------------------------------------------------------------- 压缩完成 ------------ 文件路径:项目根目录:${outputFilePath}.zip ------------ 文件大小${size}M ----------------------------------------------------------------`);});archive.on('warning', function (err: { code: string }) {if (err.code === 'ENOENT') {} else {throw err;}});archive.on('error', function (err: any) {throw err;});archive.pipe(output);archive.directory(folderPath, outputFilePath);archive.finalize();
};export default function autoBuildZip(fileName: string): Plugin {return {name: 'vite:autoBuildZip',apply: 'build',enforce: 'post',closeBundle() {compressFolder(fileName, fileName);},};
}
使用
在vite.config.ts
中引入
// 该插件用于自动打包zip文件
import autoBuildZip from './vitePlugins/autoBuildZip';plugins:[autoBuildZip('dist'),
]