deps-sort
sort module-deps output for deterministic browserify bundles
example
command-line
$ for((i=0;i<5;i++)); do module-deps main.js | deps-sort | browser-pack | md5sum; done
e9e630de2c62953140357db0444c3c3a -
e9e630de2c62953140357db0444c3c3a -
e9e630de2c62953140357db0444c3c3a -
e9e630de2c62953140357db0444c3c3a -
e9e630de2c62953140357db0444c3c3a -
or using browserify --deps
on a voxeljs project:
$ for((i=0;i<5;i++)); do browserify --deps browser.js | deps-sort | browser-pack | md5sum; done
fb418c74b53ba2e4cef7d01808b848e6 -
fb418c74b53ba2e4cef7d01808b848e6 -
fb418c74b53ba2e4cef7d01808b848e6 -
fb418c74b53ba2e4cef7d01808b848e6 -
fb418c74b53ba2e4cef7d01808b848e6 -
api
To use this module programmatically, write streaming object data and read streaming object data:
var sort = require('../')();
var JSONStream = require('JSONStream');
var parse = JSONStream.parse([ true ]);
var stringify = JSONStream.stringify();
process.stdin.pipe(parse).pipe(sort).pipe(stringify).pipe(process.stdout);
methods
var depsSort = require('deps-sort');
var stream = depsSort(opts)
Return a new through stream
that should get written module-deps objects and will output sorted objects.
opts
can be:
-
opts.index
- when true, for each module-deps row, insertrow.index
with the numeric index androw.indexDeps
likerow.deps
but mapping require strings to row indices -
opts.expose
- array of names or object mapping names totrue
not to mangle with integer indexes whenopts.index
is turned on. Ifopts.expose
maps names to strings, those strings will be used to resolve the indexed references. -
opts.dedupe
- setrow.dedupe
for files that match existing contents. Setsrow.dedupeIndex
whenopts.index
is enabled. Whenrow.dedupe
is set,row.sameDeps
will be set to a boolean of whether the dependencies at the dedupe target match (true) or just the source content (false).
input objects
Input objects are file objects in the module-deps shape. They must at least have these properties:
row.id
- a unique identifier for the filerow.source
- the file contentsrow.deps
- dependencies for this file, mapping strings as used inrequire()
to row IDs.
output objects
All the input properties, and:
row.index
- whenopts.index
is true, the sorted numeric index of the rowrow.indexDeps
- likerow.deps
, but mapping torow.index
instead ofrow.id
row.dedupe
- whenopts.dedupe
is true, contains the row ID of a file with identical contentsrow.dedupeIndex
- likerow.dedupe
, but contains therow.index
instead ofrow.id
install
With npm do:
npm install deps-sort
license
MIT