12
12
13
13
// =========================================================
14
14
15
- function loadModulesRollup ( code , callback ) {
15
+ function loadModulesRollup ( code ) {
16
16
var board = Espruino . Core . Env . getBoardData ( ) ;
17
17
var env = Espruino . Core . Env . getData ( ) ;
18
18
var modules = [ ] ;
@@ -27,29 +27,56 @@ function loadModulesRollup(code, callback) {
27
27
modules . push ( [ entryFilename , code ] ) ;
28
28
}
29
29
30
+ var job = Espruino . Config ;
31
+ var minify = job . MINIFICATION_LEVEL === 'TERSER' ;
32
+ var minifyModules = job . MODULE_MINIFICATION_LEVEL === 'TERSER' ;
33
+
30
34
return espruinoRollup . bundle ( {
31
35
modules,
32
36
input : entryFilename ,
33
37
output : {
34
38
format : 'cjs'
35
39
} ,
36
40
espruino : {
37
- job : Espruino . Config ,
41
+ job,
38
42
39
43
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
45
47
}
46
48
} )
47
49
}
48
50
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 ( ) ) ;
53
80
}
54
81
55
82
exports . loadModulesRollup = loadModulesRollup
0 commit comments