solo-skins/toolers/compress.js

56 lines
1.9 KiB
JavaScript

var fs = require("fs"),
path = require('path'),
exec = require("child_process").exec;
var getCompressFiles = function (root) {
var res = [],
files = fs.readdirSync(root);
files.forEach(function(file) {
var pathname = root + '/' + file,
stat = fs.lstatSync(pathname);
if (!stat.isDirectory()) {
if (pathname.indexOf("mobile") < 0 && path.basename(pathname).indexOf(".min") < 0) {
if (path.dirname(pathname).indexOf("css") > -1) {
res.push("css-" + pathname);
}
if (path.dirname(pathname).indexOf("js") > -1) {
res.push("js-" + pathname);
}
}
} else {
res = res.concat(getCompressFiles(pathname));
}
});
return res;
};
(function () {
var compressFiles = getCompressFiles("..");
for (var i = 0; i < compressFiles.length; i++) {
// skin js compress
if (compressFiles[i].indexOf("js-") > -1) {
var pathname = compressFiles[i].split("js-")[1];
console.log("compress js:" + pathname);
exec("uglifyjs " + pathname + " > " + path.dirname(pathname) + "/" + path.basename(pathname, ".js") + ".min.js", function (error, stdout, stderr) {
if (error !== null) {
console.log(error);
}
});
}
// skin css compress
if (compressFiles[i].indexOf("css-") > -1) {
var pathname = compressFiles[i].split("css-")[1];
console.log("compress css:" + pathname);
exec("lessc -compress " + pathname + " > " + path.dirname(pathname) + "/" + path.basename(pathname, ".css") + ".min.css", function (error, stdout, stderr) {
if (error !== null) {
console.log(error);
}
});
}
}
})();