1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- var browserify = require('../');
- var vm = require('vm');
- var fs = require('fs');
- var path = require('path');
- var test = require('tap').test;
- var prelude = fs.readFileSync(path.join(__dirname, 'multi_bundle', '_prelude.js'), 'utf8');
- test('unique require', function (t) {
- t.plan(6);
- var core = browserify({
- externalRequireName: 'unique_require',
- prelude: prelude
- });
- core.require(__dirname + '/multi_bundle/b.js', { expose: './b' });
- var app = browserify(
- [__dirname + '/multi_bundle/a.js'],
- { prelude: prelude }
- );
- // inform this bundle that b exists in another bundle
- app.external('./b');
- 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);
-
- t.equal(c.unique_require('./b'), 'foo');
- });
- });
- });
|