sort module-deps output for deterministic browserify bundles
$ 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 -
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);
var depsSort = require('deps-sort');
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, insert row.index
with
the numeric index and row.indexDeps
like row.deps
but mapping require
strings to row indices
opts.expose
- array of names or object mapping names to true
not to mangle
with integer indexes when opts.index
is turned on. If opts.expose
maps names
to strings, those strings will be used to resolve the indexed references.
opts.dedupe
- set row.dedupe
for files that match existing contents. Sets
row.dedupeIndex
when opts.index
is enabled. When row.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).
With npm do:
npm install deps-sort
MIT
# deps-sort sort [module-deps](https://npmjs.org/package/module-deps) output for deterministic browserify bundles [![build status](https://secure.travis-ci.org/substack/deps-sort.png)](http://travis-ci.org/substack/deps-sort) # 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](http://voxeljs.com/) 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: ``` js 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 ``` js var depsSort = require('deps-sort'); ``` ## var stream = depsSort(opts) Return a new through `stream` that should get written [module-deps](https://npmjs.org/package/module-deps) objects and will output sorted objects. `opts` can be: * `opts.index` - when true, for each module-deps row, insert `row.index` with the numeric index and `row.indexDeps` like `row.deps` but mapping require strings to row indices * `opts.expose` - array of names or object mapping names to `true` not to mangle with integer indexes when `opts.index` is turned on. If `opts.expose` maps names to strings, those strings will be used to resolve the indexed references. * `opts.dedupe` - set `row.dedupe` for files that match existing contents. Sets `row.dedupeIndex` when `opts.index` is enabled. When `row.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). # install With [npm](https://npmjs.org) do: ``` npm install deps-sort ``` # license MIT
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 19553 | swellard | Move and rename clients | ||
//guest/perforce_software/helix-web-services/main/source/clients/2016.1.0/javascript/node_modules/deps-sort/readme.markdown | |||||
#1 | 18810 | tjuricek |
First-pass at JavaScript client SDK. JavaScript requires Node with Gulp to "browserfy" the library. It's the easiest way I found to use the swagger-js project; bundle up a wrapping method. There is no JavaScript reference guide. The swagger-js doesn't really document what they do very well, actually. Overall I'm not particularly impressed by swagger-js, it was hard to even figure out what the right method syntax was. We may want to invest time in doing it better. This required setting CORS response headers, which are currently defaulted to a fairly insecure setting. |