Tar implemented in the browser
Find a file
Jamison Dance c1a69341d3 Missing another this on out, and the bounds checking was totally borked.
Bounds checking bug was preventing the size of the out array from being expanded more than once.
2011-10-28 12:54:18 -06:00
dep Added dependency to repository 2011-06-09 09:36:33 -06:00
examples Example now uses built-in btoa instead of custom base64 encoding 2011-07-31 20:09:56 -06:00
lib Missing another this on out, and the bounds checking was totally borked. 2011-10-28 12:54:18 -06:00
LICENSE Example works 2011-06-04 13:58:10 -06:00
package.json Fixed bug when appending a file whose size is a multiple of 512 bytes 2011-07-31 20:08:42 -06:00
README.md Fixed README to work with package name. 2011-06-04 14:05:26 -07:00

Intro

Have you ever wanted to tar something, but you didn't want to push it to your server first?

Tar-js is here to the rescue!!

With tar-js, you can construct a tar archive in the browser. This is basically a port of tar-async for Nodejs for the browser, with a couple differences.

Here's what it supports:

  • Add strings to a tar archive as files
  • Customizable uid, gid, mtime, and permissions (defaults work well though too)
  • Add files in a directory heirarchy

Dependencies

Tar needs an HTML5 compliant browser. More specifically it needs Uint8Array to work.

The only external module is require-kiss, which makes browser JS much more Node-like.

This module can be installed from npm (npm install require-kiss) or directly downloaded from github (https://github.com/coolaj86/require-kiss-js).

Usage Guide

In your HTML file, make sure that require-kiss is included first. Then, to use it, do something like this:

var Tar = require('tar'),
    tape = new Tar();

Then all you got to do is call tape.append with your params and it'll be added to the archive. That's it!

Here's the api for append: append(filepath, content, [opts], [callback])

  • filepath- string path (can include directories and such)
  • content- string or Uint8Array
  • opts- options:
    • mode- permissions of resulting file (octet) [default: 777]
    • mtime- modification time in seconds (integer) [default: current time]
    • uid- user id (integer) [default: 0]
    • gid- group id (integer) [default: 0]
  • callback- callback when done (takes a Uint8Array as it's only parameter)
    • This is a reference to the tar so far
    • Copy it if you want to use it, because subsequent adds may break stuff