factor-bundle
Advanced tools
Comparing version 0.0.0 to 0.0.1
@@ -7,2 +7,3 @@ var Transform = require('stream').Transform; | ||
var combine = require('stream-combiner'); | ||
var nub = require('nub'); | ||
@@ -82,3 +83,3 @@ module.exports = function (files, opts) { | ||
var row = self._buffered[file]; | ||
var groups = self._groups[file]; | ||
var groups = nub(self._groups[file]); | ||
@@ -85,0 +86,0 @@ if (groups.length > self._threshold) { |
{ | ||
"name": "factor-bundle", | ||
"version": "0.0.0", | ||
"version": "0.0.1", | ||
"description": "factor browser-pack bundles into common shared bundles", | ||
@@ -12,3 +12,4 @@ "main": "index.js", | ||
"minimist": "~0.0.5", | ||
"stream-combiner": "~0.0.4" | ||
"stream-combiner": "~0.0.4", | ||
"nub": "0.0.0" | ||
}, | ||
@@ -15,0 +16,0 @@ "devDependencies": { |
@@ -11,25 +11,25 @@ var test = require('tape'); | ||
var files = [ 'x.js', 'y.js' ].map(function (file) { | ||
return path.join(__dirname, 'files', file); | ||
}); | ||
var expected = { | ||
common: [ read('z.js') ], | ||
'x.js': [ | ||
read('x.js', { | ||
entry: true, | ||
deps: { './z.js': norm('z.js'), './w.js': norm('w.js') } | ||
}), | ||
read('w.js') | ||
], | ||
'y.js': [ | ||
read('y.js', { | ||
entry: true, | ||
deps: { './z.js': norm('z.js') } | ||
}) | ||
] | ||
}; | ||
test('more complicated dependencies', function (t) { | ||
//t.plan(5); | ||
t.plan(2); | ||
var files = [ 'x.js', 'y.js' ].map(function (file) { | ||
return path.join(__dirname, 'files', file); | ||
}); | ||
var expected = { | ||
common: [ read('z.js') ], | ||
'x.js': [ | ||
read('x.js', { | ||
entry: true, | ||
deps: { './z.js': norm('z.js'), './w.js': norm('w.js') } | ||
}), | ||
read('w.js') | ||
], | ||
'y.js': [ | ||
read('y.js', { | ||
entry: true, | ||
deps: { './z.js': norm('z.js') } | ||
}) | ||
] | ||
}; | ||
@@ -89,2 +89,66 @@ var packs = { | ||
test('same module included twice', function (t) { | ||
//t.plan(5); | ||
t.plan(3); | ||
var files = [ 't.js' ].map(function (file) { | ||
return path.join(__dirname, 'files', file); | ||
}); | ||
var expected = { | ||
common: [], | ||
't.js': [ | ||
read('t.js', { | ||
entry: true, | ||
deps: { './a.js': norm('a.js'), './w.js': norm('w.js') } | ||
}), | ||
read('a.js'), | ||
read('w.js', { | ||
deps: { './a.js': norm('a.js') } | ||
}) | ||
] | ||
}; | ||
var packs = { | ||
common: pack({ raw: true }), | ||
't.js': pack({ raw: true }) | ||
}; | ||
var pending = 2; | ||
var sources = {}; | ||
packs.common.pipe(concat(function (src) { | ||
sources.common = src; | ||
done(); | ||
})); | ||
packs['t.js'].pipe(concat(function (src) { | ||
sources['t.js'] = src; | ||
done(); | ||
})); | ||
function done () { | ||
if (--pending !== 0) return; | ||
var srct = 'require=' + sources.common | ||
+ ';require=' + sources['t.js'] | ||
; | ||
function logx (msg) { t.equal(msg, 300) } | ||
vm.runInNewContext(srct, { console: { log: logx } }); | ||
} | ||
var rows = []; | ||
var fr = factor(files, { objectMode: true, raw: true }); | ||
fr.on('stream', function (bundle) { | ||
var name = path.basename(bundle.file); | ||
bundle.pipe(rowsOf(function (rows) { | ||
t.deepEqual(rows, expected[name]); | ||
})); | ||
bundle.pipe(packs[name]); | ||
}); | ||
mdeps(files).pipe(fr) | ||
fr.pipe(rowsOf(function (rows) { | ||
t.deepEqual(rows, expected.common); | ||
})); | ||
fr.pipe(packs.common); | ||
}); | ||
function rowsOf (cb) { | ||
@@ -91,0 +155,0 @@ var rows = []; |
17358
19
393
6