Socket
Socket
Sign inDemoInstall

archiver

Package Overview
Dependencies
Maintainers
1
Versions
83
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

archiver

Creates Archives (ZIP) via Node Streams.


Version published
Weekly downloads
8.6M
decreased by-5.32%
Maintainers
1
Weekly downloads
 
Created

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.8.1 Build Status

Creates Archives (Zip, Tar) via Node Streams.

NPM

Install

npm install archiver --save

You can also use npm install https://github.com/ctalkington/node-archiver/archive/master.tar.gz to test upcoming versions.

Archiver

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.

registerFormat(format, module)

Registers an archive format. Format modules are essentially transform streams with a few required methods. They will be further documented once a formal spec is in place.

Instance Methods

Inherits Transform Stream methods.

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' });
bulk(mappings)

Appends multiple entries from passed array of src-dest mappings, based on Grunt's "Files Array" format. A lazystream wrapper is used to prevent issues with open file limits.

Globbing patterns and multiple properties are supported through use of the file-utils package, based on Grunt's file utilities. Please note that multiple src files to single dest file (ie concat) is not supported.

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

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

Appends a file given its filepath. Uses 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' });
finalize()

Finalizes the instance. You should listen for the end/close/finish of the destination stream to properly detect completion.

pointer()

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

Events

Inherits Transform Stream events.

entry

Fired when the input has been received, processed, and emitted. Passes entry data as first argument.

Zip

Options

comment string

Sets the zip comment.

forceUTC boolean

If true, forces the entry date to UTC. Helps with testing across timezones.

store boolean

If true, all entry contents will be archived without compression by default.

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.

store boolean

If true, entry contents will be archived without compression.

comment string

Sets the entry comment.

mode number

Sets the entry permissions. (experimental)

Tar

Options

recordSize number

Sets the size (in bytes) of each record in a block, default is 512 (for advanced users only).

recordsPerBlock number

Sets the number of records in a block, default is 20 (for advanced users only).

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.

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.

mode number

Sets the entry permissions. Defaults to octal 0664.

Things of Interest

Credits

Concept inspired by Antoine van Wel's node-zipstream.

Tar inspired by isaacs's node-tar.

Keywords

FAQs

Package last updated on 01 Apr 2014

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
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc