UNPKG

1.55 kBJavaScriptView Raw
1/**
2 * To be able to lazy load bundles with script loaders the loaded bundles
3 * must have access to modules exposed by previous bundles.
4 *
5 * In effect this is the same as adding the bundles in reverse order
6 **/
7
8var browserify = require('../');
9var vm = require('vm');
10var test = require('tap').test;
11
12test('reverse multi bundle', function (t) {
13 t.plan(5);
14
15 // Main app bundle has the main app code and the shared libarary code
16 var app = browserify([__dirname + '/reverse_multi_bundle/app.js'])
17 .external(__dirname + '/reverse_multi_bundle/lazy.js')
18 .require(__dirname + '/reverse_multi_bundle/shared.js', { expose: true })
19 .require(__dirname + '/reverse_multi_bundle/arbitrary.js', {expose: 'not/real'});
20
21 // Lazily loaded bundle has only its own code even it uses code from the
22 // shared library.
23 var lazy = browserify({
24 filter: function (id) {
25 return id !== 'not/real';
26 }
27 })
28 .require(__dirname + '/reverse_multi_bundle/lazy.js', { expose: true })
29 .external(__dirname + '/reverse_multi_bundle/shared.js')
30 .external('not/real');
31
32
33 app.bundle(function (err, appSrc) {
34 if (err) throw err;
35 lazy.bundle(function(err, lazySrc) {
36 if (err) throw err;
37
38 var src = appSrc + ';' + lazySrc;
39 var c = {
40 setTimeout: setTimeout,
41 clearTimeout: clearTimeout,
42 t: t
43 };
44 vm.runInNewContext(src, c);
45 });
46 });
47});