var browserify = require('../'); var vm = require('vm'); var test = require('tap').test; test('multi bundle', function (t) { t.plan(5); var core = browserify(); core.require(__dirname + '/multi_bundle/b.js', { expose: true }); var app = browserify([__dirname + '/multi_bundle/a.js']); // inform this bundle that b exists in another bundle app.external(__dirname + '/multi_bundle/b.js'); core.bundle(function (err, src) { var c = { console: console, t : t, baton: { times: 0 } }; // loading core will cause no require to run vm.runInNewContext(src, c); t.equal(c.baton.times, 0); // loading the app will require app.bundle(function (err, src) { vm.runInNewContext(src, c); // b required for the first time t.equal(c.baton.times, 1); // running the file again // because it is using the same b, no reloading vm.runInNewContext(src, c); // b should not have been required again // because it was part of the core bundle t.equal(c.baton.times, 1); }); }); }); test('multi bundle', function (t) { t.plan(8); var core = browserify({ exposeAll: true }); core.require(__dirname + '/multi_bundle/a.js', { expose: true }); var app = browserify([__dirname + '/multi_bundle/c.js']); // inform this bundle that b exists in another bundle app.external(core); core.bundle(function (err, src) { var c = { console: console, t : t, baton: { times: 0 } }; // loading core will cause no require to run vm.runInNewContext(src, c); t.equal(c.baton.times, 0); // loading the app will require app.bundle(function (err, src) { vm.runInNewContext(src, c); // b required for the first time t.equal(c.baton.times, 1); // running the file again // because it is using the same b, no reloading vm.runInNewContext(src, c); // b should not have been required again // because it was part of the core bundle t.equal(c.baton.times, 1); }); }); });