Socket
Socket
Sign inDemoInstall

archiver

Package Overview
Dependencies
8
Maintainers
1
Versions
83
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

archiver

a streaming interface for archive generation


Version published
Weekly downloads
9M
increased by7.58%
Maintainers
1
Created
Weekly downloads
 

Package description

What is archiver?

The archiver npm package is a streaming interface for archive generation, allowing users to create and manage different types of compressed files programmatically. It supports formats like ZIP and TAR and can be used for tasks such as creating backups, delivering files in a compressed format, or bundling project assets.

What are archiver's main functionalities?

Creating ZIP archives

This code demonstrates how to create a ZIP file named 'example.zip' with a single file 'file.txt' included. It sets the compression level to 9 using zlib.

const fs = require('fs');
const archiver = require('archiver');

const output = fs.createWriteStream('example.zip');
const archive = archiver('zip', { zlib: { level: 9 } });

output.on('close', function() {
  console.log(`Archive size: ${archive.pointer()} bytes`);
});

archive.pipe(output);
archive.append(fs.createReadStream('file.txt'), { name: 'file.txt' });
archive.finalize();

Creating TAR archives

This code snippet shows how to create a TAR file named 'example.tar' with gzip compression, including the file 'file.txt'.

const fs = require('fs');
const archiver = require('archiver');

const output = fs.createWriteStream('example.tar');
const archive = archiver('tar', { gzip: true });

output.on('close', function() {
  console.log(`Archive size: ${archive.pointer()} bytes`);
});

archive.pipe(output);
archive.append(fs.createReadStream('file.txt'), { name: 'file.txt' });
archive.finalize();

Appending multiple files and directories

This example demonstrates how to append multiple files and directories to a ZIP archive. It includes a single file, a directory, and all JavaScript files in the current directory using a glob pattern.

const fs = require('fs');
const archiver = require('archiver');

const output = fs.createWriteStream('example.zip');
const archive = archiver('zip');

archive.pipe(output);
archive.file('file1.txt', { name: 'file1.txt' });
archive.directory('subdir/', 'new-subdir');
archive.glob('*.js');
archive.finalize();

Other packages similar to archiver

Readme

Source

Archiver v0.20.0 Build Status Build status

a streaming interface for archive generation

NPM

Install

npm install archiver --save

Usage

var archiver = require('archiver');
var archive = archiver.create('zip', {}); // or archiver('zip', {});

API

Transform

Inherits Transform Stream methods.

create(format, options)

Creates an Archiver instance based on the format (zip, tar, etc) passed. Parameters can be passed directly to Archiver constructor for convenience.

abort()

Aborts the archiving process, taking a best-effort approach, by:

  • removing any pending queue tasks
  • allowing any active queue workers to finish
  • detaching internal module pipes
  • ending both sides of the Transform stream

It will NOT drain any remaining sources.

append(input, data)

Appends an input source (text string, buffer, or stream) to the instance. When the instance has received, processed, and emitted the input, the entry event is fired.

Replaced #addFile in v0.5.

archive.append('string', { name:'string.txt' });
archive.append(new Buffer('string'), { name:'buffer.txt' });
archive.append(fs.createReadStream('mydir/file.txt'), { name:'stream.txt' });
archive.append(null, { name:'dir/' });
bulk(mappings)

As of v0.19, it is recommended to use the asynchronous glob method especially in server environments. bulk will likely be deprecated in a future release.

Appends multiple entries from passed array of src-dest mappings. A lazystream wrapper is used to prevent issues with open file limits.

Globbing patterns are supported through use of the bundled file-utils module.

The data property can be set (per src-dest mapping) to define data for matched entries.

archive.bulk([
  { src: ['mydir/**'], data: { date: new Date() } },
  { src: ['mydir/**'], data: function(data) {
    data.date = new Date();
    return data;
  }},
  { expand: true, cwd: 'mydir', src: ['**'], dest: 'newdir' }
]);

As of v0.15, the data property can also be a function that receives data for each matched entry and is expected to return it after making any desired adjustments.

For more detail on this feature, please see BULK.md.

directory(dirpath[, destpath, data])

Appends a directory and its files, recursively, given its dirpath. This is meant to be a simpler approach to something previously only possible with bulk. The use of destpath allows one to define a custom destination path within the resulting archive and data allows for setting data on each entry appended.

// mydir/ -> archive.ext/mydir/
archive.directory('mydir');

// mydir/ -> archive.ext/abc/
archive.directory('mydir', 'abc');

// mydir/ -> archive.ext/
archive.directory('mydir', false, { date: new Date() });
archive.directory('mydir', false, function(data) {
  data.date = new Date();
  return data;
});

As of v0.15, the data property can also be a function that receives data for each entry and is expected to return it after making any desired adjustments.

file(filepath, data)

Appends a file given its filepath using a lazystream wrapper to prevent issues with open file limits. When the instance has received, processed, and emitted the file, the entry event is fired.

archive.file('mydir/file.txt', { name:'file.txt' });
glob(pattern, options, data)

Appends multiple files that match a glob pattern. Supports passing glob options as a second parameter and entry data as a third parameter.

archive.glob('directory/**/*', { nodir: true }, { date: new Date() });
finalize()

Finalizes the instance and prevents further appending to the archive structure (queue will continue til drained). The end, close or finish events on the destination stream may fire right after calling this method so you should set listeners beforehand to properly detect stream completion.

You must call this method to get a valid archive and end the instance stream.

pointer()

Returns the current byte length emitted by archiver. Use this in your end callback to log generated size.

use(plugin)

Add a plugin to the middleware stack. Currently this is designed for passing the module to use (replaces registerFormat/setFormat/setModule)

Events

Inherits Transform Stream events.

entry

Fired when the entry's input has been processed and appended to the archive. Passes entry data as first argument.

Zip

Options

comment string

Sets the zip comment.

statConcurrency number

Sets the number of workers used to process the internal fs stat queue. Defaults to 4.

store boolean

If true, all entries will be archived without compression. Defaults to false.

zlib object

Passed to node's zlib module to control compression. Options may vary by node version.

Entry Data

name string required

Sets the entry name including internal path.

date string|Date

Sets the entry date. This can be any valid date string or instance. Defaults to current time in locale.

When using the bulk or file methods, fs stat data is used as the default value.

store boolean

If true, this entry will be archived without compression. Defaults to global store option.

comment string

Sets the entry comment.

mode number

Sets the entry permissions. Defaults to octal 0755 (directory) or 0644 (file).

When using the bulk or file methods, fs stat data is used as the default value.

stats fs.Stats

Sets the fs stat data for this entry. This allows for reduction of fs stat calls when stat data is already known.

Tar

Options

gzip boolean

Compresses the tar archive using gzip, default is false.

gzipOptions object

Passed to node's zlib module to control compression. Options may vary by node version.

statConcurrency number

Sets the number of workers used to process the internal fs stat queue. Defaults to 4.

Entry Data

name string required

Sets the entry name including internal path.

date string|Date

Sets the entry date. This can be any valid date string or instance. Defaults to current time in locale.

When using the bulk or file methods, fs stat data is used as the default value.

mode number

Sets the entry permissions. Defaults to octal 0755 (directory) or 0644 (file).

When using the bulk or file methods, fs stat data is used as the default value.

stats fs.Stats

Sets the fs stat data for this entry. This allows for reduction of fs stat calls when stat data is already known.

Custom Formats

Archiver ships with out of the box support for TAR and ZIP archives.

You can register additional formats with registerFormat.

Formats will be changing in the next few releases to implement a middleware approach.

Libraries

Archiver makes use of several libraries/modules to avoid duplication of efforts.

Things of Interest

Keywords

FAQs

Last updated on 30 Nov 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc