UNPKG

2.56 kBJavaScriptView Raw
1/**
2 * Bundl plugin to package 'required' dependencies
3 */
4
5var each = require('seebigs-each');
6var getEntryModule = require('./lib/entry');
7var findModules = require('./lib/find');
8var packModules = require('./lib/pack');
9var requirer = require('./lib/pack/requirer.js');
10
11function bundlPack(options) {
12 var opts = Object.assign({}, options);
13
14 var modulesCache = {};
15
16 /**
17 * @param {Object} r the resource object being processed
18 * (must contain r.contents)
19 */
20 function exec(r) {
21 var _this = this;
22 var startingLines = _this.isBundl ? _this.LINES || 1 : 1;
23 var cumulativeLines = startingLines + 5;
24 var requireAs = {};
25
26 if (r.changed) {
27 modulesCache = {};
28 }
29
30 if (r.contents) {
31 var contentsString = r.contents.getString();
32 if (contentsString) {
33 var entryMod = getEntryModule(r, contentsString, opts, cumulativeLines);
34 var found = findModules(entryMod, requireAs, opts, [], modulesCache, cumulativeLines);
35 found.requireAs = requireAs;
36 entryMod.relMap = found.relMap;
37 var packed = packModules(found, entryMod, opts);
38
39 if (packed.insertExtraLines) {
40 r.sourcemaps.forEach(function (smap) {
41 smap.generated.line += packed.insertExtraLines;
42 });
43 }
44
45 each(found.modules, function (mod, modPath) {
46
47 // map dependency to Bundl
48 if (_this.isBundl) {
49 _this.mapDependency.call(_this, r.name, modPath);
50 }
51 // add sourcemap to resource
52 r.sourcemaps.push(mod.sourcemap);
53
54 });
55
56 // replace contents with our packaged code
57 r.contents.set(packed.code);
58 }
59 }
60
61 return r;
62 }
63
64 return {
65 name: 'pack',
66 stage: 'stringy',
67 ext: ['js'],
68 exec: exec,
69 };
70
71}
72
73function create(contents, options) {
74 var _contents = contents;
75 var r = {
76 contents: {
77 getString: function () {
78 return _contents;
79 },
80 set: function (newContents) {
81 _contents = newContents;
82 },
83 },
84 sourcemaps: [],
85 };
86 bundlPack(options).exec(r);
87 return r.contents.getString();
88}
89
90bundlPack.create = create;
91bundlPack.requirer = requirer;
92
93module.exports = bundlPack;