MCPcopy
hub / github.com/archiverjs/node-archiver

github.com/archiverjs/node-archiver @8.0.0 sqlite

repository ↗ · DeepWiki ↗ · release 8.0.0 ↗
81 symbols 209 edges 21 files 45 documented · 56%
README

Archiver

A streaming interface for archive generation

Visit the API documentation for a list of all methods available.

Install

npm install archiver --save

Quick Start

import fs from "fs";
import { ZipArchive } from "archiver";

// create a file to stream archive data to.
const output = fs.createWriteStream(__dirname + "/example.zip");
const archive = new ZipArchive({
  zlib: { level: 9 }, // Sets the compression level.
});

// listen for all archive data to be written
// 'close' event is fired only when a file descriptor is involved
output.on("close", function () {
  console.log(archive.pointer() + " total bytes");
  console.log(
    "archiver has been finalized and the output file descriptor has closed.",
  );
});

// This event is fired when the data source is drained no matter what was the data source.
// It is not part of this library but rather from the NodeJS Stream API.
// @see: https://nodejs.org/api/stream.html#stream_event_end
output.on("end", function () {
  console.log("Data has been drained");
});

// good practice to catch warnings (ie stat failures and other non-blocking errors)
archive.on("warning", function (err) {
  if (err.code === "ENOENT") {
    // log warning
  } else {
    // throw error
    throw err;
  }
});

// good practice to catch this error explicitly
archive.on("error", function (err) {
  throw err;
});

// pipe archive data to the file
archive.pipe(output);

// append a file from stream
const file1 = __dirname + "/file1.txt";
archive.append(fs.createReadStream(file1), { name: "file1.txt" });

// append a file from string
archive.append("string cheese!", { name: "file2.txt" });

// append a file from buffer
const buffer3 = Buffer.from("buff it!");
archive.append(buffer3, { name: "file3.txt" });

// append a file
archive.file("file1.txt", { name: "file4.txt" });

// append files from a sub-directory and naming it `new-subdir` within the archive
archive.directory("subdir/", "new-subdir");

// append files from a sub-directory, putting its contents at the root of archive
archive.directory("subdir/", false);

// append files from a glob pattern
archive.glob("file*.txt", { cwd: __dirname });

// finalize the archive (ie we are done appending files but streams have to finish yet)
// 'close', 'end' or 'finish' may be fired right after calling this method so register to them beforehand
archive.finalize();

Formats

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

Core symbols most depended-on inside this repo

on
called by 37
lib/plugins/zip.js
append
called by 22
lib/core.js
pipe
called by 19
lib/plugins/zip.js
finalize
called by 17
lib/core.js
file
called by 12
lib/core.js
directory
called by 7
lib/core.js
_normalizeEntryData
called by 5
lib/core.js
glob
called by 5
lib/core.js

Shape

Method 51
Function 16
Class 14

Languages

TypeScript100%

Modules by API surface

lib/core.js31 symbols
lib/plugins/tar.js9 symbols
index.js9 symbols
lib/plugins/zip.js8 symbols
lib/plugins/json.js8 symbols
test/helpers/index.js7 symbols
lib/utils.js5 symbols
examples/progress.js2 symbols
lib/error.js1 symbols
benchmark/common.js1 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

@docusaurus/core3.10.1 · 1×
@docusaurus/preset-classic3.10.1 · 1×
@mdx-js/react3.0.0 · 1×
archiver-jsdoc-theme1.1.3 · 1×
async3.2.4 · 1×
buffer-crc321.0.0 · 1×
chai6.2.2 · 1×
clsx2.0.0 · 1×
is-stream4.0.0 · 1×
jsdoc4.0.5 · 1×
lazystream1.0.0 · 1×
mkdirp3.0.1 · 1×

For agents

$ claude mcp add node-archiver \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact