+-

export const zipFilePromise = (sourcePath: string, outputPath: string, zipDirname: string) => {
return new Promise((resolve, reject) => {
try {
let output = fs.createWriteStream(outputPath);
let archive = archiver("zip", { zlib: { level: 9 } });
output.on("close", function () {
console.log(archive.pointer() + " total bytes");
resolve(true);
});
output.on("end", function () {
console.warn("Data has been drained");
});
output.on("drain", function (e) {
//缓存区充满并被写入完成,处于清空状态时触发
console.warn("zipping drained");
});
output.on("error", function (e) {
console.warn("Data has been error");
reject(e);
});
output.on("finish", function () {
console.warn("Data has been finished");
});
output.on("pipe", function () {
console.warn("Data has been piped");
});
output.on("unpipe", function () {
console.warn("Data has been unpipe");
});
archive.on("warning", function (err) {
if (err.code === "ENOENT") {
reject("ENOENT");
} else {
reject(err);
}
});
archive.on("error", function (err) {
reject(err);
});
archive.pipe(output);
archive.on("progress", function (res) {
console.log(res)
});
archive.directory(sourcePath, zipDirname);
archive.finalize();
} catch (err) {
console.log(err);
reject(err);
}
});
};
archive.on("progress", function (res) {
console.log(res)
});
res 打印的是
1. {entries: {…}, fs: {…}}
entries: {total: 43, processed: 43} fs: {totalBytes: 162325234, processedBytes: 162325234}
进度完成都一样,该怎么算呢