From 4bf34bf66845a49248361f1b0546badd5607d664 Mon Sep 17 00:00:00 2001 From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Wed, 21 Dec 2016 11:56:07 +0300 Subject: [PATCH] cssnano task implemented --- BuildServer/lib/tasks/cssnano.js | 35 ++++++++++++++++++++++++++++ BuildServer/lib/tasks/cssnanoall.js | 36 +++++++++++++++++++++++++++++ BuildServer/lib/tasks/packform.js | 3 +++ BuildServer/package.json | 1 + 4 files changed, 75 insertions(+) create mode 100644 BuildServer/lib/tasks/cssnano.js create mode 100644 BuildServer/lib/tasks/cssnanoall.js 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",