import fs from 'fs' import archiver from 'archiver' export async function zipDir(dirPath, outputPath, ignore?: string | string[]) { return new Promise((resolve, reject) => { const output = fs.createWriteStream(outputPath) const archive = archiver('zip') output.on('close', function() { resolve({ zipPath: outputPath, size: Math.ceil(archive.pointer() / 1024) }) }) archive.on('error', function(err) { reject(err) }) archive.pipe(output) // append files from a glob pattern archive.glob('**/*', { // 目标路径 cwd: dirPath, ignore: ignore, dot: true }) archive.finalize() }) }