安装依赖
shell
pnpm add archiver @types/archiver
/vitePlugins/autoBuildZip.ts
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
中引入
ts
// 该插件用于自动打包zip文件
import autoBuildZip from './vitePlugins/autoBuildZip';
plugins:[
autoBuildZip('dist'),
]