Skip to content
/ tar Public

Creates or extract TAR archives in Nodejs without dependencies.

Notifications You must be signed in to change notification settings

PopovMP/tar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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"
*/

About

Creates or extract TAR archives in Nodejs without dependencies.

Resources

Stars

Watchers

Forks