|
|
|
@ -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) { |
|
|
|
|