From bf8f0e857dc80a7c0f77b5025072dc434ac2ef7a Mon Sep 17 00:00:00 2001 From: Roman Axelrod Date: Mon, 15 Apr 2024 00:07:18 +0300 Subject: [PATCH] fix windows archive issue --- helpers.js | 55 +++++++++++++++++++++--------------------------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/helpers.js b/helpers.js index ec2a05d..8cba802 100644 --- a/helpers.js +++ b/helpers.js @@ -126,46 +126,33 @@ export function capitalize(str) { export async function zipProject(srcDir, outputFileName = 'dist.zip') { // create a file to stream archive data to. const output = await fsExtra.createWriteStream(outputFileName); - const archive = archiver('zip', {}); - // listen for all archive data to be written - // 'close' event is fired only when a file descriptor is involved - output.on('close', function () { - console.log(archive.pointer() + ' total bytes'); - console.log('archiver has been finalized and the output file descriptor has closed.'); - }); - - // This event is fired when the data source is drained no matter what was the data source. - // It is not part of this library but rather from the NodeJS Stream API. - // @see: https://nodejs.org/api/stream.html#stream_event_end - output.on('end', function () { - console.log('Data has been drained'); - }); + return new Promise((resolve, reject) => { + // Create a file to write the archive data + const archive = archiver('zip', { + zlib: {level: 9} // Compression level + }); - // good practice to catch warnings (ie stat failures and other non-blocking errors) - archive.on('warning', function (err) { - if (err.code === 'ENOENT') { - // log warning - } else { - // throw error - throw err; - } - }); + // Listen for errors on the archiver + archive.on('error', function (err) { + reject(err); + }); - // good practice to catch this error explicitly - archive.on('error', function (err) { - throw err; - }); + // Handle closure of the output file stream + output.on('close', function () { + console.log(`Archive created successfully and it is ${archive.pointer()} total bytes`); + resolve(); + }); - // pipe archive data to the file - archive.pipe(output); + // Pipe archive data to the file + archive.pipe(output); - // append files from a subdirectory, putting its contents at the root of archive - archive.directory(srcDir, false); + // Add files to the archive + archive.directory(srcDir, false); - // finalize the archive (ie we are done appending files but streams have to finish yet) - // 'close', 'end' or 'finish' may be fired right after calling this method so register to them beforehand - await archive.finalize(); + // Finalize the archive - this is very important to ensure the file stream is finished + archive.finalize(); + }); } export async function buildExportFiles(blockName, platform) { -- 2.30.2