npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@popovmp/tar

v1.2.1

Published

Creates or extract TAR archives in Nodejs without dependencies.

Downloads

8

Readme

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