{"_id":"asar-electron-builder","_rev":"4244425","name":"asar-electron-builder","description":"Creating Electron app packages","dist-tags":{"latest":"0.14.2"},"maintainers":[{"name":"develar","email":""}],"time":{"modified":"2026-03-29T21:26:54.000Z","created":"2016-07-27T08:01:59.467Z","0.14.2":"2017-02-23T07:11:19.911Z","0.14.1":"2017-02-23T07:07:20.656Z","0.14.0":"2017-02-22T21:18:02.143Z","0.13.5":"2016-09-01T06:25:06.077Z","0.13.4":"2016-09-01T06:12:39.412Z","0.13.2":"2016-07-27T08:01:59.467Z"},"users":{},"repository":{"type":"git","url":"git+https://github.com/electron/asar.git"},"versions":{"0.14.2":{"main":"./lib/asar.js","name":"asar-electron-builder","description":"Creating Electron app packages","version":"0.14.2","engines":{"node":">=4.6"},"license":"MIT","homepage":"https://github.com/electron/asar","repository":{"type":"git","url":"git+https://github.com/electron/asar.git"},"bugs":{"url":"https://github.com/electron/asar/issues"},"scripts":{"test":"mocha --reporter spec && npm run lint","lint":"standard"},"standard":{"env":{"mocha":true}},"dependencies":{"chromium-pickle-js":"^0.2.0","cuint":"^0.2.2","minimatch":"^3.0.3","mkdirp":"^0.5.1"},"devDependencies":{"lodash":"^4.2.1","mocha":"^2.0.1","rimraf":"^2.5.1","standard":"^8.6.0"},"gitHead":"0d6f54475ad0ee7f27b5ba088eb6f5978604f89c","_id":"asar-electron-builder@0.14.2","_shasum":"11d83db690b877ed0d319fe5de12284035347250","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"11d83db690b877ed0d319fe5de12284035347250","size":18031,"noattachment":false,"key":"/asar-electron-builder/-/asar-electron-builder-0.14.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/asar-electron-builder/download/asar-electron-builder-0.14.2.tgz"},"maintainers":[{"name":"develar","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/asar-electron-builder-0.14.2.tgz_1487833877843_0.30741864955052733"},"directories":{},"publish_time":1487833879911,"_hasShrinkwrap":false,"_cnpm_publish_time":1487833879911,"_cnpmcore_publish_time":"2021-12-17T01:15:43.740Z"},"0.14.1":{"main":"./lib/asar.js","name":"asar-electron-builder","description":"Creating Electron app packages","version":"0.14.1","engines":{"node":">=4.6"},"license":"MIT","homepage":"https://github.com/electron/asar","repository":{"type":"git","url":"git+https://github.com/electron/asar.git"},"bugs":{"url":"https://github.com/electron/asar/issues"},"scripts":{"test":"mocha --reporter spec && npm run lint","lint":"standard"},"standard":{"env":{"mocha":true}},"dependencies":{"chromium-pickle-js":"^0.2.0","cuint":"^0.2.2","minimatch":"^3.0.3","mkdirp":"^0.5.1"},"devDependencies":{"lodash":"^4.2.1","mocha":"^2.0.1","rimraf":"^2.5.1","standard":"^8.6.0"},"gitHead":"0d6f54475ad0ee7f27b5ba088eb6f5978604f89c","_id":"asar-electron-builder@0.14.1","_shasum":"82a1ab424be43af9e74537c4379b4d34992eaade","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"82a1ab424be43af9e74537c4379b4d34992eaade","size":18873,"noattachment":false,"key":"/asar-electron-builder/-/asar-electron-builder-0.14.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/asar-electron-builder/download/asar-electron-builder-0.14.1.tgz"},"maintainers":[{"name":"develar","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/asar-electron-builder-0.14.1.tgz_1487833638828_0.43486849614419043"},"directories":{},"publish_time":1487833640656,"_hasShrinkwrap":false,"_cnpm_publish_time":1487833640656,"_cnpmcore_publish_time":"2021-12-17T01:15:43.986Z"},"0.14.0":{"main":"./lib/asar.js","name":"asar-electron-builder","description":"Creating Electron app packages","version":"0.14.0","bin":{"asar":"./bin/asar.js"},"engines":{"node":">=4.6"},"license":"MIT","homepage":"https://github.com/electron/asar","repository":{"type":"git","url":"git+https://github.com/electron/asar.git"},"bugs":{"url":"https://github.com/electron/asar/issues"},"scripts":{"test":"mocha --reporter spec && npm run lint","lint":"standard"},"standard":{"env":{"mocha":true}},"dependencies":{"chromium-pickle-js":"^0.2.0","commander":"^2.9.0","cuint":"^0.2.2","minimatch":"^3.0.3","mkdirp":"^0.5.1"},"devDependencies":{"lodash":"^4.2.1","mocha":"^2.0.1","rimraf":"^2.5.1","standard":"^8.6.0"},"gitHead":"0d6f54475ad0ee7f27b5ba088eb6f5978604f89c","_id":"asar-electron-builder@0.14.0","_shasum":"f0b56f5a3f3eaaddc2a44cd127d2a0f708422f92","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"f0b56f5a3f3eaaddc2a44cd127d2a0f708422f92","size":19548,"noattachment":false,"key":"/asar-electron-builder/-/asar-electron-builder-0.14.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/asar-electron-builder/download/asar-electron-builder-0.14.0.tgz"},"maintainers":[{"name":"develar","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/asar-electron-builder-0.14.0.tgz_1487798280129_0.535474254284054"},"directories":{},"publish_time":1487798282143,"_hasShrinkwrap":false,"_cnpm_publish_time":1487798282143,"_cnpmcore_publish_time":"2021-12-17T01:15:44.183Z"},"0.13.5":{"main":"./lib/asar.js","name":"asar-electron-builder","description":"Creating Electron app packages","version":"0.13.5","bin":{"asar":"bin/asar"},"license":"MIT","homepage":"https://github.com/electron/asar","repository":{"type":"git","url":"git+https://github.com/electron/asar.git"},"bugs":{"url":"https://github.com/electron/asar/issues"},"scripts":{"prepublish":"grunt coffee","pretest":"grunt clean coffeelint coffee","test":"mocha --reporter spec --compilers coffee:coffee-script/register","clean":"grunt clean"},"dependencies":{"chromium-pickle-js":"^0.2.0","commander":"^2.9.0","cuint":"^0.2.1","minimatch":"^3.0.2","mkdirp":"^0.5.1"},"devDependencies":{"glob":"^7.0.5","coffee-script":"^1.10.0","grunt":"^1.0.1","grunt-cli":"^1.2.0","grunt-coffeelint":"git+https://github.com/atom/grunt-coffeelint.git#cfb99aa99811d52687969532bd5a98011ed95bfe","grunt-contrib-coffee":"^1.0.0","lodash":"^4.14.1","mocha":"^2.5.3","rimraf":"^2.5.4"},"gitHead":"059d3a911d9d65fa9a8e84de20a971838d97ac58","_id":"asar-electron-builder@0.13.5","_shasum":"4ccd4d11fd7c9d3b3cffc782fde3deed9ef91af6","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"4ccd4d11fd7c9d3b3cffc782fde3deed9ef91af6","size":8091,"noattachment":false,"key":"/asar-electron-builder/-/asar-electron-builder-0.13.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/asar-electron-builder/download/asar-electron-builder-0.13.5.tgz"},"maintainers":[{"name":"develar","email":""}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/asar-electron-builder-0.13.5.tgz_1472711104213_0.5683776084333658"},"directories":{},"publish_time":1472711106077,"_hasShrinkwrap":false,"_cnpm_publish_time":1472711106077,"_cnpmcore_publish_time":"2021-12-17T01:15:44.397Z"},"0.13.4":{"main":"./lib/asar.js","name":"asar-electron-builder","description":"Creating Electron app packages","version":"0.13.4","bin":{"asar":"bin/asar"},"license":"MIT","homepage":"https://github.com/electron/asar","repository":{"type":"git","url":"git+https://github.com/electron/asar.git"},"bugs":{"url":"https://github.com/electron/asar/issues"},"scripts":{"prepublish":"grunt coffee","pretest":"grunt clean coffeelint coffee","test":"mocha --reporter spec --compilers coffee:coffee-script/register","clean":"grunt clean"},"dependencies":{"chromium-pickle-js":"^0.2.0","commander":"^2.9.0","cuint":"^0.2.1","minimatch":"^3.0.2","mkdirp":"^0.5.1"},"devDependencies":{"glob":"^7.0.5","coffee-script":"^1.10.0","grunt":"^1.0.1","grunt-cli":"^1.2.0","grunt-coffeelint":"git+https://github.com/atom/grunt-coffeelint.git#cfb99aa99811d52687969532bd5a98011ed95bfe","grunt-contrib-coffee":"^1.0.0","lodash":"^4.14.1","mocha":"^2.5.3","rimraf":"^2.5.4"},"gitHead":"10cb832829ff8bb45d3881482f5373169432cd29","_id":"asar-electron-builder@0.13.4","_shasum":"cac44f62f4fdd41cafb9bb0245d9241c4f86361a","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"cac44f62f4fdd41cafb9bb0245d9241c4f86361a","size":8207,"noattachment":false,"key":"/asar-electron-builder/-/asar-electron-builder-0.13.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/asar-electron-builder/download/asar-electron-builder-0.13.4.tgz"},"maintainers":[{"name":"develar","email":""}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/asar-electron-builder-0.13.4.tgz_1472710357576_0.16258446243591607"},"directories":{},"publish_time":1472710359412,"_hasShrinkwrap":false,"_cnpm_publish_time":1472710359412,"_cnpmcore_publish_time":"2021-12-17T01:15:44.765Z"},"0.13.2":{"main":"./lib/asar.js","name":"asar-electron-builder","description":"Creating atom-shell app packages","version":"0.13.2","bin":{"asar":"bin/asar"},"license":"MIT","homepage":"https://github.com/electron/asar","repository":{"type":"git","url":"git+https://github.com/electron/asar.git"},"bugs":{"url":"https://github.com/electron/asar/issues"},"scripts":{"pretest":"grunt clean coffeelint coffee","test":"mocha --reporter spec --compilers coffee:coffee-script/register","clean":"grunt clean"},"dependencies":{"chromium-pickle-js":"^0.1.0","commander":"^2.9.0","cuint":"^0.2.1","minimatch":"^3.0.2","mkdirp":"^0.5.1"},"devDependencies":{"glob":"^7.0.5","coffee-script":"^1.10.0","grunt":"^1.0.1","grunt-cli":"^1.2.0","grunt-coffeelint":"git+https://github.com/atom/grunt-coffeelint.git#cfb99aa99811d52687969532bd5a98011ed95bfe","grunt-contrib-coffee":"^1.0.0","lodash":"^4.14.0","mocha":"^2.5.3","rimraf":"^2.5.4"},"_id":"asar-electron-builder@0.13.2","_shasum":"e6ed91e59a2e60efbd6021de028448790480d5a4","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"develar","email":"develar@gmail.com"},"dist":{"shasum":"e6ed91e59a2e60efbd6021de028448790480d5a4","size":7350,"noattachment":false,"key":"/asar-electron-builder/-/asar-electron-builder-0.13.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/asar-electron-builder/download/asar-electron-builder-0.13.2.tgz"},"maintainers":[{"name":"develar","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/asar-electron-builder-0.13.2.tgz_1469606517923_0.6456296124961227"},"directories":{},"publish_time":1469606519467,"_hasShrinkwrap":false,"_cnpm_publish_time":1469606519467,"_cnpmcore_publish_time":"2021-12-17T01:15:44.982Z"}},"readme":"# asar - Electron Archive\n\n[![Travis build status](https://travis-ci.org/electron/asar.svg?branch=master)](https://travis-ci.org/electron/asar)\n[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/k0158woosmypinrc/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/asar/branch/master)\n[![dependencies](http://img.shields.io/david/electron/asar.svg?style=flat-square)](https://david-dm.org/electron/asar)\n[![npm version](http://img.shields.io/npm/v/asar.svg?style=flat-square)](https://npmjs.org/package/asar)\n\nAsar is a simple extensive archive format, it works like `tar` that concatenates\nall files together without compression, while having random access support.\n\n## Features\n\n* Support random access\n* Use JSON to store files' information\n* Very easy to write a parser\n\n## Command line utility\n\n### Install\n\n```bash\n$ npm install asar\n```\n\n### Usage\n\n```bash\n$ asar --help\n\n  Usage: asar [options] [command]\n\n  Commands:\n\n    pack|p <dir> <output>\n       create asar archive\n\n    list|l <archive>\n       list files of asar archive\n\n    extract-file|ef <archive> <filename>\n       extract one file from archive\n\n    extract|e <archive> <dest>\n       extract archive\n\n\n  Options:\n\n    -h, --help     output usage information\n    -V, --version  output the version number\n\n```\n\n#### Excluding multiple resources from being packed\n\nGiven:\n```\n    app\n(a) ├── x1\n(b) ├── x2\n(c) ├── y3\n(d) │   ├── x1\n(e) │   └── z1\n(f) │       └── x2\n(g) └── z4\n(h)     └── w1\n```\n\nExclude: a, b\n```bash\n$ asar pack app app.asar --unpack-dir \"{x1,x2}\"\n```\n\nExclude: a, b, d, f\n```bash\n$ asar pack app app.asar --unpack-dir \"**/{x1,x2}\"\n```\n\nExclude: a, b, d, f, h\n```bash\n$ asar pack app app.asar --unpack-dir \"{**/x1,**/x2,z4/w1}\"\n```\n\n## Using programatically\n\n### Example\n\n```js\nvar asar = require('asar');\n\nvar src = 'some/path/';\nvar dest = 'name.asar';\n\nasar.createPackage(src, dest, function() {\n  console.log('done.');\n})\n```\n\nPlease note that there is currently **no** error handling provided!\n\n### Transform\nYou can pass in a `transform` option, that is a function, which either returns\nnothing, or a `stream.Transform`. The latter will be used on files that will be\nin the `.asar` file to transform them (e.g. compress).\n\n```js\nvar asar = require('asar');\n\nvar src = 'some/path/';\nvar dest = 'name.asar';\n\nfunction transform(filename) {\n  return new CustomTransformStream()\n}\n\nasar.createPackageWithOptions(src, dest, { transform: transform }, function() {\n  console.log('done.');\n})\n```\n\n## Using with grunt\n\nThere is also an unofficial grunt plugin to generate asar archives at [bwin/grunt-asar][grunt-asar].\n\n## Format\n\nAsar uses [Pickle][pickle] to safely serialize binary value to file, there is\nalso a [node.js binding][node-pickle] of `Pickle` class.\n\nThe format of asar is very flat:\n\n```\n| UInt32: header_size | String: header | Bytes: file1 | ... | Bytes: file42 |\n```\n\nThe `header_size` and `header` are serialized with [Pickle][pickle] class, and\n`header_size`'s [Pickle][pickle] object is 8 bytes.\n\nThe `header` is a JSON string, and the `header_size` is the size of `header`'s\n`Pickle` object.\n\nStructure of `header` is something like this:\n\n```json\n{\n   \"files\": {\n      \"tmp\": {\n         \"files\": {}\n      },\n      \"usr\" : {\n         \"files\": {\n           \"bin\": {\n             \"files\": {\n               \"ls\": {\n                 \"offset\": \"0\",\n                 \"size\": 100,\n                 \"executable\": true\n               },\n               \"cd\": {\n                 \"offset\": \"100\",\n                 \"size\": 100,\n                 \"executable\": true\n               }\n             }\n           }\n         }\n      },\n      \"etc\": {\n         \"files\": {\n           \"hosts\": {\n             \"offset\": \"200\",\n             \"size\": 32\n           }\n         }\n      }\n   }\n}\n```\n\n`offset` and `size` records the information to read the file from archive, the\n`offset` starts from 0 so you have to manually add the size of `header_size` and\n`header` to the `offset` to get the real offset of the file.\n\n`offset` is a UINT64 number represented in string, because there is no way to\nprecisely represent UINT64 in JavaScript `Number`. `size` is a JavaScript\n`Number` that is no larger than `Number.MAX_SAFE_INTEGER`, which has a value of\n`9007199254740991` and is about 8PB in size. We didn't store `size` in UINT64\nbecause file size in Node.js is represented as `Number` and it is not safe to\nconvert `Number` to UINT64.\n\n[pickle]: https://chromium.googlesource.com/chromium/src/+/master/base/pickle.h\n[node-pickle]: https://www.npmjs.org/package/chromium-pickle\n[grunt-asar]: https://github.com/bwin/grunt-asar\n","_attachments":{},"homepage":"https://github.com/electron/asar","bugs":{"url":"https://github.com/electron/asar/issues"},"license":"MIT"}