From 97bb6f3a336f7c4665d74c9a0aa058cf44bef6a6 Mon Sep 17 00:00:00 2001 From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Tue, 20 Dec 2016 17:02:30 +0300 Subject: [PATCH] Implemented JS minification (with uglify.js) --- BuildServer/lib/tasks/packform.js | 3 +++ BuildServer/lib/tasks/uglifyjs.js | 22 +++++++++++++++++ BuildServer/lib/tasks/uglifyjsall.js | 36 ++++++++++++++++++++++++++++ BuildServer/package.json | 1 + 4 files changed, 62 insertions(+) create mode 100644 BuildServer/lib/tasks/uglifyjs.js create mode 100644 BuildServer/lib/tasks/uglifyjsall.js diff --git a/BuildServer/lib/tasks/packform.js b/BuildServer/lib/tasks/packform.js index 37a106c..04f45f3 100644 --- a/BuildServer/lib/tasks/packform.js +++ b/BuildServer/lib/tasks/packform.js @@ -4,6 +4,9 @@ const sequential = require('./sequential'); module.exports = (params, processor) => sequential({ tasks: [ + { + type: "uglifyjsall" + }, { type: "zip", params: { diff --git a/BuildServer/lib/tasks/uglifyjs.js b/BuildServer/lib/tasks/uglifyjs.js new file mode 100644 index 0000000..a113ef2 --- /dev/null +++ b/BuildServer/lib/tasks/uglifyjs.js @@ -0,0 +1,22 @@ +"use strict"; + +const fs = require('fs'); +const path = require('path'); +const UglifyJS = require("uglify-js"); + +module.exports = (params, processor) => ({ + process: () => { + const filePath = path.normalize(processor.context.exported + "/" + params.filename); + const result = UglifyJS.minify(filePath); + fs.writeFile(filePath, result.code, (err) => { + if (err) { + processor.onError("Unable to write uglified script for " + params.filename + ": " + err); + } else { + processor.onInfo("Saved uglified script for " + params.filename + "; uglified length: " + result.code.length); + } + + processor.done(); + }); + } +}); + diff --git a/BuildServer/lib/tasks/uglifyjsall.js b/BuildServer/lib/tasks/uglifyjsall.js new file mode 100644 index 0000000..276c5a5 --- /dev/null +++ b/BuildServer/lib/tasks/uglifyjsall.js @@ -0,0 +1,36 @@ +"use strict"; + +const glob = require('glob'); + +module.exports = (params, processor) => ({ + process: () => { + if (processor.context.uglifyjsallDone) { + processor.onWarn("dotnetnunitall task is executed more than once; this is probably a bug in your mbs.json"); + } + + processor.context.uglifyjsallDone = true; + + glob("**/*.js", { + dot: true, + cwd: processor.context.exported + }, (err, files) => { + if (err) { + processor.onError(err); + return processor.done(); + } + + return processor.processTask({ + type: params.preventParallelTests ? "sequential" : "parallel", + params: { + tasks: files.map((file) => ({ + name: file, + type: "uglifyjs", + params: { + filename: file + } + })) + } + }, processor.done.bind(processor)); + }); + } +}); diff --git a/BuildServer/package.json b/BuildServer/package.json index 9d29b58..cf27806 100644 --- a/BuildServer/package.json +++ b/BuildServer/package.json @@ -23,6 +23,7 @@ "recursive-tree-copy": "0.0.1", "serve-favicon": "^2.3.2", "serve-static": "^1.11.1", + "uglify-js": "^2.7.5", "underscore": "^1.8.3" } }