Zips up directories into buffers or saves to disk
Clone or download
Latest commit 09c7e7b Feb 21, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
test Use upgraded JSZip from npm instead of local fork, fixes #1 Jan 15, 2015
.gitignore Initial commit Dec 4, 2013
.travis.yml Update travis to only work on .10 Jul 10, 2014
LICENSE Initial Dec 4, 2013 Update readme with badges Jan 15, 2015
index.js Fix infinite recursive loop when zipping thousand files Feb 12, 2016
package.json Increment to 1.0.2 Feb 21, 2016


Zips up a directory and saves the zip to disk or returns as a buffer.

Build Status Build Status


$ npm install zip-dir


var zipdir = require('zip-dir');

zipdir('/path/to/be/zipped', function (err, buffer) {
  // `buffer` is the buffer of the zipped file

zipdir('/path/to/be/zipped', { saveTo: '~/' }, function (err, buffer) {
  // `buffer` is the buffer of the zipped file
  // And the buffer was saved to `~/`

// Use a filter option to prevent zipping other zip files!
// Keep in mind you have to allow a directory to descend into!
zipdir('/path/to/be/zipped', { filter: (path, stat) => !/\.zip$/.test(path) }, function (err, buffer) {

// Use an `each` option to call a function everytime a file is added, and receives the path
zipdir('/path/to/be/zipped', { each: path => console.log(p, "added!"), function (err, buffer) {



var zipdir = require('zip-dir');

zipdir(dirPath, [options], callback)

Zips up dirPath recursively preserving directory structure and returns the compressed buffer into callback on success. If options defined with a saveTo path, then the callback will be delayed until the buffer has also been saved to disk.


  • saveTo A path to save the buffer to.
  • filter A function that is called for all items to determine whether or not they should be added to the zip buffer. Function is called with the fullPath and a stats object (fs.Stats). Return true to add the item; false otherwise. To include files within directories, directories must also pass this filter.
  • each A function that is called everytime a file or directory is added to the zip.


  • Add an option to not add empty directories if there are no valid children inside