Skip to content

Commit ed79706

Browse files
committed
feat(bootloader): pretty and prod
1 parent f78b7d7 commit ed79706

File tree

1 file changed

+53
-36
lines changed

1 file changed

+53
-36
lines changed

index.js

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,69 @@
1-
var bootstrapModule = /(\.bootstrapModule)\((.+)\)/gm;
1+
var utils = require('loader-utils');
2+
3+
var bootstrapModule = /(\.bootstrapModule|\.bootstrapModuleFactory)\((.+)\)/gm;
24

35
function Angular2HMRLoader(source, sourcemap) {
46
var self = this;
57
// Not cacheable during unit tests;
68
self.cacheable && self.cacheable();
9+
var query = utils.parseQuery(self.query);
10+
11+
function done(src, srcmap) {
12+
// Support for tests
13+
if (self.callback) {
14+
self.callback(null, src, srcmap);
15+
} else {
16+
return src;
17+
}
18+
}
19+
20+
if (query.prod) {
21+
return done(source, sourcemap);
22+
}
723

824
source = source.replace(bootstrapModule, function (match, boot, ngmodule, offset, src) {
925
// return updated metadata
26+
var newLine = ' ';
27+
if (query.pretty) {
28+
newLine = '\n';
29+
}
30+
1031
return boot + '(' + ngmodule + ')' +
11-
'.then(function(MODULE_REF) {' +
12-
'if (module["hot"]) {\n'+
13-
'module["hot"]["accept"]();\n'+
14-
'\n'+
15-
'if (MODULE_REF.instance["hmrOnInit"]) {\n'+
16-
'MODULE_REF.instance["hmrOnInit"](module["hot"]["data"]);\n'+
17-
'}\n'+
18-
'if (MODULE_REF.instance["hmrOnStatus"]) {\n'+
19-
'module["hot"]["apply"](function(status) {\n'+
20-
'MODULE_REF.instance["hmrOnStatus"](status);\n'+
21-
'});\n'+
22-
'}\n'+
23-
'if (MODULE_REF.instance["hmrOnCheck"]) {\n'+
24-
'module["hot"]["check"](function(err, outdatedModules) {\n'+
25-
'MODULE_REF.instance["hmrOnCheck"](err, outdatedModules);\n'+
26-
'});\n'+
27-
'}\n'+
28-
'if (MODULE_REF.instance["hmrOnDecline"]) {\n'+
29-
'module["hot"]["decline"](function(dependencies) {\n'+
30-
'MODULE_REF.instance["hmrOnDecline"](dependencies);\n'+
31-
'});\n'+
32-
'}\n'+
33-
'module["hot"]["dispose"](function(store) {\n'+
34-
'MODULE_REF.instance["hmrOnDestroy"] && MODULE_REF.instance["hmrOnDestroy"](store);\n'+
35-
'MODULE_REF.destroy();\n'+
36-
'MODULE_REF.instance["hmrAfterDestroy"] && MODULE_REF.instance["hmrAfterDestroy"](store);\n'+
37-
' });\n'+
38-
'}\n'+
39-
'return MODULE_REF;\n'+
32+
'.then(function(MODULE_REF) {'+ newLine +
33+
' if (module["hot"]) {'+ newLine +
34+
' module["hot"]["accept"]();'+ newLine +
35+
' '+ newLine +
36+
' if (MODULE_REF.instance["hmrOnInit"]) {'+ newLine +
37+
' MODULE_REF.instance["hmrOnInit"](module["hot"]["data"]);'+ newLine +
38+
' }'+ newLine +
39+
' if (MODULE_REF.instance["hmrOnStatus"]) {'+ newLine +
40+
' module["hot"]["apply"](function(status) {'+ newLine +
41+
' MODULE_REF.instance["hmrOnStatus"](status);'+ newLine +
42+
' });'+ newLine +
43+
' }'+ newLine +
44+
' if (MODULE_REF.instance["hmrOnCheck"]) {'+ newLine +
45+
' module["hot"]["check"](function(err, outdatedModules) {'+ newLine +
46+
' MODULE_REF.instance["hmrOnCheck"](err, outdatedModules);'+ newLine +
47+
' });'+ newLine +
48+
' }'+ newLine +
49+
' if (MODULE_REF.instance["hmrOnDecline"]) {'+ newLine +
50+
' module["hot"]["decline"](function(dependencies) {'+ newLine +
51+
' MODULE_REF.instance["hmrOnDecline"](dependencies);'+ newLine +
52+
' });'+ newLine +
53+
' }'+ newLine +
54+
' module["hot"]["dispose"](function(store) {'+ newLine +
55+
' MODULE_REF.instance["hmrOnDestroy"] && MODULE_REF.instance["hmrOnDestroy"](store);'+ newLine +
56+
' MODULE_REF.destroy();'+ newLine +
57+
' MODULE_REF.instance["hmrAfterDestroy"] && MODULE_REF.instance["hmrAfterDestroy"](store);'+ newLine +
58+
' });'+ newLine +
59+
' }'+ newLine +
60+
' return MODULE_REF;'+ newLine +
4061
'})'
4162
});
4263

43-
// Support for tests
44-
if (self.callback) {
45-
self.callback(null, source, sourcemap)
46-
} else {
47-
return source;
48-
}
64+
return done(source, sourcemap)
4965
};
66+
5067
Angular2HMRLoader.default = Angular2HMRLoader;
5168

5269
module.exports = Angular2HMRLoader

0 commit comments

Comments
 (0)