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.indexwith the numeric index androw.indexDepslikerow.depsbut mapping require strings to row indices -
opts.expose- array of names or object mapping names totruenot to mangle with integer indexes whenopts.indexis turned on. Ifopts.exposemaps names to strings, those strings will be used to resolve the indexed references. -
opts.dedupe- setrow.dedupefor files that match existing contents. Setsrow.dedupeIndexwhenopts.indexis enabled. Whenrow.dedupeis set,row.sameDepswill 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.indexis true, the sorted numeric index of the rowrow.indexDeps- likerow.deps, but mapping torow.indexinstead ofrow.idrow.dedupe- whenopts.dedupeis true, contains the row ID of a file with identical contentsrow.dedupeIndex- likerow.dedupe, but contains therow.indexinstead ofrow.id
install
With npm do:
npm install deps-sort
license
MIT
