What is tar?
The tar npm package is used for manipulating tarballs, which are archives of files and directories. It allows users to create new tarballs, extract files from existing tarballs, and list or update the contents of tarballs. It is a JavaScript implementation of the POSIX tar command and is commonly used in Node.js applications for handling tar files.
What are tar's main functionalities?
Creating a tarball
This feature allows you to create a tarball. The example code demonstrates how to create a gzipped tarball named 'my-tarball.tgz' that contains 'file1.js' and 'file2.txt'.
const tar = require('tar');
tar.c(
{
gzip: true,
file: 'my-tarball.tgz'
},
['file1.js', 'file2.txt']
).then(_ => console.log('Tarball has been created.'));
Extracting a tarball
This feature allows you to extract files from a tarball. The example code demonstrates how to extract 'my-tarball.tgz' into the directory 'some/dir'.
const tar = require('tar');
tar.x(
{
file: 'my-tarball.tgz',
C: 'some/dir'
}
).then(_ => console.log('Tarball has been extracted.'));
Listing contents of a tarball
This feature allows you to list the contents of a tarball. The example code demonstrates how to list the paths of all files and directories in 'my-tarball.tgz'.
const tar = require('tar');
tar.t(
{
file: 'my-tarball.tgz',
onentry: entry => console.log(entry.path)
}
).then(_ => console.log('Contents have been listed.'));
Updating a tarball
This feature allows you to update a tarball by adding new files. The example code demonstrates how to add 'newfile.txt' to the existing 'my-tarball.tgz'.
const tar = require('tar');
tar.u(
{
file: 'my-tarball.tgz'
},
['newfile.txt']
).then(_ => console.log('Tarball has been updated.'));
Other packages similar to tar
archiver
Archiver is a streaming interface for archive generation, supporting ZIP and TAR formats. It offers more customization options for creating archives compared to tar, such as appending files from streams, buffers, or the file system with specific archive options.
compressing
Compressing is a powerful and flexible node.js compression library that supports various archive formats like tar, zip, gzip, and bzip2. It provides both streaming and promise-based APIs, which can be more convenient for certain use cases compared to tar.
node-tar
Node-tar is another tarball manipulation library that can handle large files and supports streaming. It is similar to the tar package but is maintained by a different group of developers. It may have different performance characteristics or API nuances.