Reputation: 651
I have written below for zipping a directory :
const archiver = require('archiver');
let createArchive = function(sourceDir, destDir) {
const archive = archiver('zip');
const stream = fs.createWriteStream(destDir);
return new Promise((resolve, reject) => {
archive
.directory(sourceDir, false)
.on('error', err => reject(err))
.pipe(stream)
;
stream.on('close', () => resolve());
archive.finalize();
});
}
Before zipping my directory looked like this :
When I unzipped the archive (called yayy.zip
) it had these files in it:
There is an invalid file called yayy.zip
inside it. How can I avoid this?
Upvotes: 0
Views: 473
Reputation: 42721
Instead of directory
, you can use the glob
method to specify the files to zip. It takes a second argument where you can specify files to ignore.
const archiver = require('archiver');
let createArchive = function(sourceDir, destDir) {
const archive = archiver('zip');
const stream = fs.createWriteStream(destDir);
return new Promise((resolve, reject) => {
archive
.on('error', err => reject(err))
.pipe(stream)
.glob(
'**/*',
{cwd: sourceDir, ignore: filename}
)
;
stream.on('close', () => resolve());
archive.finalize();
});
}
Upvotes: 2