Add automatic uglification of script {...} content
authorNick Downing <nick@ndcode.org>
Sat, 17 Nov 2018 01:48:59 +0000 (12:48 +1100)
committerNick Downing <nick@ndcode.org>
Sat, 17 Nov 2018 07:15:47 +0000 (18:15 +1100)
package.json
visitors.js

index 65d7578..f5de67a 100644 (file)
@@ -28,7 +28,8 @@
     "astring": "^1.3.1",
     "html-escape": "^2.0.0",
     "rollup": "^0.45.0",
-    "rollup-plugin-buble": "^0.16.0"
+    "rollup-plugin-buble": "^0.16.0",
+    "uglify-es": "^3.3.9"
   },
   "devDependencies": {},
   "scripts": {
index 5ce07bb..5bce925 100644 (file)
@@ -24,6 +24,7 @@
 let assert = require('assert')
 let astring = require('astring')
 let transform = require('./transform')
+let uglify_es = require('uglify-es')
 let html_escape = require('html-escape')
 
 let expr_to_tag = (node, context, html_allowed, call_allowed) => {
@@ -167,15 +168,31 @@ let html_body = (context, st, c) => {
 
   let result = []
   let body = c(context.body, st, 'Statement').body
-  if (tag === 'script')
-    prefix += astring.generate(
-      {
-        type: 'Program',
-        body: body,
-        sourceType: 'script'
-      },
-      {indent: ''}
+  if (tag === 'script') {
+    // simple way
+    //prefix += astring.generate(
+    //  {
+    //    type: 'Program',
+    //    body: body,
+    //    sourceType: 'script'
+    //  },
+    //  {indent: ''}
+    //)
+    // uglified way
+    let render = uglify_es.minify(
+      astring.generate(
+        {
+          type: 'Program',
+          body: body,
+          sourceType: 'script'
+        },
+        {indent: ''}
+      )
     )
+    if (render.error)
+      throw render.error
+    prefix += render.code 
+  }
   else if (body.length !== 0) {
     let expr1 = {
       type: 'Literal',