@popovmp/tar

1.2.1 • Public • Published

tar

A Nodejs utility for creating and extracting tar archives programmatically.

Purpose

To be used programmatically for creating and extracting updates in tar format.

The created tar can be compressed or decompressed by the Nodejs zlib.

tar create archive in POSIX 1003.1-1988 (ustar) format.

Goals

  • to create and extracts tar archives in UStar format.
  • to be compatible with 7-Zip and the Linux tar command.
  • to have an easy, eat all, API.
  • to have a more detailed API for hacking.
  • use relative paths from the parent of the 'target' directory

Examples

Tar all

Archive a complete directory to a tar archive.

Here target can be a path to a directory or a single file.

const {createArchive} = require("@popovmp/tar");

const tarPath = "stuff.tar";
const target  = "./path/to/stuff";

createArchive(tarPath, target);

Extract all

Extract a tar archive from tarPath into the destination directory.

const {extractArchive} = require("@popovmp/tar");

const tarPath     = "stuff.tar";
const destination = "./destination";

extractArchive(tarPath, destination);

Extract a Buffer

You can extract a tar buffer to a destination directory. This method is useful when you acquire the tar buffer from a network request.

const {extract} = require("@popovmp/tar");

const tarball     = getTarBufferSomehow();
const destination = "./destination";

extract(tarball, destination);

Create tar by entry paths

Create a tar Buffer given a list of entry paths and a base directory.

This is useful if you want to precise the tar content.

const {getEntryStats, create} = require("@popovmp/tar");
const {gzipSync} = require("node:zlib");

const baseDir    = "./base";
const entryPaths = [
	"stuff/",
	"stuff/hello.txt",
	"stuff/inner/",
	"stuff/inner/other.bin",
];

const entryStats = getEntryStats(baseDir, entryPaths);
const tarball    = create(baseDir, entryStats);
const tarGz      = gzipSync(tarball);

// Save tarGz to file or send it via network.

Get entry paths

Read all entry pats of a target directory.

It is useful if you want to manually add or remove paths to archive.

const {getEntryPaths} = require("@popovmp/tar");

const target     = "./path/to/stuff";
const entryPaths = getEntryPaths(target);

console.log(entryPaths.join("\n"));    

/* 
"stuff/"
"stuff/hello.txt"
"stuff/inner/"
"stuff/inner/other.bin"
*/

Readme

Keywords

Package Sidebar

Install

npm i @popovmp/tar

Weekly Downloads

1

Version

1.2.1

License

MIT

Unpacked Size

27.9 kB

Total Files

11

Last publish

Collaborators

  • popovmp