Pack directory with native command line tools (ZIP, DMG, Node.js, cross-platform).
Clone or download
Latest commit fc633af Nov 30, 2016


NPM Travis CI AppVeyor CI

Pack specified directory with native current OS command line tools.

Main purpose for this lib was to pack the Electron app.
So, by default, if specified path has a darwin in it's name, the directory will be packed as DMG under OS X.


Get the package via NPM: npm install pack-dir.

const Pack = require('pack-dir');

// Set custom DMG RegEx, default is `/darwin/`.
Pack.param('dmg', /osx/);

// Pack the directory
let zipPath = Pack.path('some/test/dir');
// Extract to directory
let extractedPath = Pack.extract(zipPath, 'some/destination');

// Async example
Pack.param('isSync', false);
let zipPath = Pack.path('some/test/dir', (error, stdout, stderr) => {
  // ...


  • dmg boolean|RegEx, check to pack into DMG instead of ZIP.
  • dmgFormat string, the hdiutil -format parameter value (docs).
  • isSilent boolean, false, will write only Errors to console.
  • isSync boolean, true, synchronous packaging.
  • skipDirName boolean, true, don't create extra directory inside ZIP archive.
  • zipOutputMaxBuffer int, 1024 * 200.


Created by Annexare Studio. Feel free to use it as you need in your apps or send updates into this public repository. All code is under MIT license.


For Windows host 7-Zip standalone console app is used (~1MB, doesn't require installation). All license files are included with it, with respect to the author (Igor Pavlov).