diff --git a/BuildServer/lib/tasks/cssnano.js b/BuildServer/lib/tasks/cssnano.js new file mode 100644 index 0000000..3b55f76 --- /dev/null +++ b/BuildServer/lib/tasks/cssnano.js @@ -0,0 +1,35 @@ +"use strict"; + +const fs = require('fs'); +const path = require('path'); +const cssnano = require("cssnano"); + +module.exports = (params, processor) => ({ + process: () => { + const filePath = path.normalize(processor.context.exported + "/" + params.filename); + fs.readFile(filePath, (err, css) => { + if (err) { + processor.onError("Unable to read stylesheet " + params.filename + ": " + err); + return processor.done(); + } + + cssnano.process(css) + .catch((err) => { + processor.onError("Unable to uglify stylesheet: " + err); + processor.done(); + }) + .then((result) => { + fs.writeFile(filePath, result.css, (err) => { + if (err) { + processor.onError("Unable to write uglified stylesheet for " + params.filename + ": " + err); + } else { + processor.onInfo("Saved uglified stylesheet for " + params.filename + "; uglified length: " + result.css.length); + } + + processor.done(); + }); + }); + }); + } +}); + diff --git a/BuildServer/lib/tasks/cssnanoall.js b/BuildServer/lib/tasks/cssnanoall.js new file mode 100644 index 0000000..1942401 --- /dev/null +++ b/BuildServer/lib/tasks/cssnanoall.js @@ -0,0 +1,36 @@ +"use strict"; + +const glob = require('glob'); + +module.exports = (params, processor) => ({ + process: () => { + if (processor.context.cssnanoallDone) { + processor.onWarn("cssnanoall task is executed more than once; this is probably a bug in your mbs.json"); + } + + processor.context.cssnanoallDone = true; + + glob("**/*.css", { + 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: "cssnano", + params: { + filename: file + } + })) + } + }, processor.done.bind(processor)); + }); + } +}); diff --git a/BuildServer/lib/tasks/packform.js b/BuildServer/lib/tasks/packform.js index 04f45f3..4f20225 100644 --- a/BuildServer/lib/tasks/packform.js +++ b/BuildServer/lib/tasks/packform.js @@ -7,6 +7,9 @@ module.exports = (params, processor) => sequential({ { type: "uglifyjsall" }, + { + type: "cssnanoall" + }, { type: "zip", params: { diff --git a/BuildServer/package.json b/BuildServer/package.json index cf27806..e91f265 100644 --- a/BuildServer/package.json +++ b/BuildServer/package.json @@ -9,6 +9,7 @@ "adm-zip": "0.4.7", "async": "~2.1.4", "body-parser": "^1.15.2", + "cssnano": "^3.9.1", "express": "4.14.0", "fs-extra": "^1.0.0", "github": "~7.1.0",