Skip to content

Commit 0390439

Browse files
committed
fix: support Config.MINIFICATION_* options for terser
1 parent c1d30d9 commit 0390439

File tree

1 file changed

+38
-11
lines changed

1 file changed

+38
-11
lines changed

libs/rollup/index.js

+38-11
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
// =========================================================
1414

15-
function loadModulesRollup(code, callback) {
15+
function loadModulesRollup(code) {
1616
var board = Espruino.Core.Env.getBoardData();
1717
var env = Espruino.Core.Env.getData();
1818
var modules = [];
@@ -27,29 +27,56 @@ function loadModulesRollup(code, callback) {
2727
modules.push([entryFilename, code]);
2828
}
2929

30+
var job = Espruino.Config;
31+
var minify = job.MINIFICATION_LEVEL === 'TERSER';
32+
var minifyModules = job.MODULE_MINIFICATION_LEVEL === 'TERSER';
33+
3034
return espruinoRollup.bundle({
3135
modules,
3236
input: entryFilename,
3337
output: {
3438
format: 'cjs'
3539
},
3640
espruino: {
37-
job: Espruino.Config,
41+
job,
3842

3943
board: board.BOARD ? board : env,
40-
mergeModules: Espruino.Config.MODULE_MERGE,
41-
minify: !!Espruino.Config.MINIFICATION_LEVEL,
42-
minifyModules: !!Espruino.Config.MODULE_MINIFICATION_LEVEL
43-
44-
// TODO: handle opts MINIFICATION_Xyz
44+
mergeModules: job.MODULE_MERGE,
45+
minify: minify ? buildEspruinoMinifyOptions() : false,
46+
minifyModules
4547
}
4648
})
4749
}
4850

49-
function minifyCodeTerser(code, callback) {
50-
return espruinoRollup.minify(code, {
51-
// TODO: handle opts MINIFICATION_Xyz
52-
})
51+
function buildEspruinoMinifyOptions() {
52+
var job = Espruino.Config;
53+
54+
var options = {};
55+
if (job.MINIFICATION_Mangle === false) {
56+
options.mangle = false;
57+
}
58+
if (job.MINIFICATION_Unused === false) {
59+
options.compress = options.compress || {};
60+
options.compress.unused = false;
61+
}
62+
if (job.MINIFICATION_DeadCode === false) {
63+
options.compress = options.compress || {};
64+
options.compress.dead_code = false;
65+
}
66+
if (job.MINIFICATION_Unreachable === false) {
67+
options.compress = options.compress || {};
68+
options.compress.dead_code = false; // in Terser dead_code ~ unreachable
69+
}
70+
if (job.MINIFICATION_Literal === false) {
71+
options.compress = options.compress || {};
72+
options.compress.reduce_vars = false;
73+
}
74+
75+
return options;
76+
}
77+
78+
function minifyCodeTerser(code) {
79+
return espruinoRollup.minify(code, buildEspruinoMinifyOptions());
5380
}
5481

5582
exports.loadModulesRollup = loadModulesRollup

0 commit comments

Comments
 (0)