javascript
const fs = require('fs');
const archiver = require('archiver');
function zipDirectory(source, out) {
const archive = archiver('zip', { zlib: { level: 9 } });
const stream = fs.createWriteStream(out);
return new Promise((resolve, reject) => {
archive
.directory(source, false)
.on('error', (err) => reject(err))
.pipe(stream);
stream.on('close', () => resolve());
archive.finalize();
});
}
const sourceDir = 'path/to/source/directory';
const outputZip = 'path/to/output.zip';
zipDirectory(sourceDir, outputZip)
.then(() => {
console.log('ZIP compression complete.');
})
.catch((err) => {
console.error('Error compressing directory:', err);
});