Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
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.
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();
JSZip is a JavaScript library for creating, reading, and editing .zip files. It works in many environments including the browser and Node.js. Compared to archiver, JSZip provides a more comprehensive API for manipulating ZIP files, including reading and editing existing archives, but it may not be as streamlined for simply generating archives.
The tar npm package provides the ability to create and extract .tar files. It is similar to archiver's TAR functionality but is more focused and does not support ZIP files. It is a good choice if you only need to work with TAR files.
Compressing is a node module that supports both tar and zip formats for compression and decompression. It offers a similar feature set to archiver but with a different API design. It might be used as an alternative if the API design aligns better with a developer's needs.
a streaming interface for archive generation
npm install archiver --save
You can also use npm install https://github.com/ctalkington/node-archiver/archive/master.tar.gz
to test upcoming versions.
Creates an Archiver instance based on the format (zip, tar, etc) passed. Parameters can be passed directly to Archiver
constructor for convenience.
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.
Inherits Transform Stream methods.
Aborts the archiving process by clearing the remaining queue. The instance will remain available in a read-only state.
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/' });
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 file-utils package. 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' }
]);
For more detail on this feature, please see BULK.md.
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' });
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.
Returns the current byte length emitted by archiver. Use this in your end callback to log generated size.
Inherits Transform Stream events.
Fired when the input has been received, processed, and emitted. Passes entry data as first argument.
string
Sets the zip comment.
number
Sets the number of workers used to process the internal fs stat queue. Defaults to 4.
boolean
If true, all entry contents will be archived without compression by default.
object
Passed to node's zlib module to control compression. Options may vary by node version.
string
required
Sets the entry name including internal path.
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.
boolean
If true, entry contents will be archived without compression.
string
Sets the entry comment.
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.
fs.Stats
Sets the fs stat data for this entry. This allows for reduction of fs stat calls when stat data is already known.
boolean
Compresses the tar archive using gzip, default is false.
object
Passed to node's zlib module to control compression. Options may vary by node version.
number
Sets the number of workers used to process the internal fs stat queue. Defaults to 4.
string
required
Sets the entry name including internal path.
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.
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.
fs.Stats
Sets the fs stat data for this entry. This allows for reduction of fs stat calls when stat data is already known.
Archiver makes use of several libraries/modules to avoid duplication of efforts.
FAQs
a streaming interface for archive generation
The npm package archiver receives a total of 9,503,119 weekly downloads. As such, archiver popularity was classified as popular.
We found that archiver demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.