JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 434583
  • Score
    100M100P100Q173103F
  • License MIT

Uses OS zip command if avaliable (for better performance and speed) or node.js version if there is no system command avaliable. Can be called via node or command line.

Package Exports

  • bestzip

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (bestzip) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

bestzip

Linux and MacOS build status Windows build status

This module provides a bestzip command that calls the native zip command if available and otherwise falls back to a Node.js implementation.

The native zip method on macOS is significantly faster and more as efficient than the Node.js version, but Windows has no native zip command. This module provides the best of both worlds.

The --recurse-directories (-r) option is automatically enabled.

Global command line usage

npm install -g bestzip
bestzip destination.zip source/ [other sources...]

Command line usage within package.json scripts

npm install --save-dev bestzip

package.json:

{
    //...
    "scripts": {
        "build" "...",
        "zip": "bestzip bundle.zip build/*",
        "upload": "....",
        "deploy": "npm run build && npm run zip && npm run upload"
    }
}

Programmatic usage from within Node.js

var zip = require('bestzip');

zip({
  source: 'build/*',
  destination: './destination.zip'
}).then(function() {
  console.log('all done!');
}).catch(function(err) {
  console.error(err.stack);
  process.exit(1);
});

// v1.x API also works for backwards compatibility: zip(destination, sources, callback)

Options

  • source: Path or paths to files and folders to include in the zip file. String or Array of Strings.
  • destination: Path to generated .zip file.
  • cwd: Set the Current Working Directory that source and destination paths are relative to. Defaults to process.cwd()

How to control the directory structure

The directory structure in the .zip is going to match your input files. To have greater or fewer levels of directories.

For example:

bestzip build.zip build/*

This includes the build/ folder inside of the .zip

Alternatively:

cd build/ && bestzip ../build.zip *

This will not include the build/ folder, it's contents will be top-level.

When using the programmatic API, the same effect may be achieved by passing in the cwd option.

.dotfiles

Wildcards ('*') ignore dotfiles.

  • To include a dotfile, either include the directory it's in (folder/) or include it by name (folder/.dotfile)
  • To omit dotfiles, either use a wildcard (folder/*) or explicitly list the desired files (folder/file1.txt folder/file2.txt)

Breaking changes for v2

  • bestzip output.zip foo/bar/file.txt now includes the foo/bar/ folders, previously it would place file.txt at the top-level
    • This was done to more closely align with the native zip command