forked from extern/egroupware
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
|
// Script to process all the less files and convert them to CSS files
|
||
|
// Run from themes/dijit/claro like:
|
||
|
//
|
||
|
// $ node compile.js
|
||
|
|
||
|
var fs = require('fs'), // file system access
|
||
|
path = require('path'), // get directory from file name
|
||
|
less = require('../../../util/less'); // less processor
|
||
|
|
||
|
var options = {
|
||
|
compress: false,
|
||
|
optimization: 1,
|
||
|
silent: false
|
||
|
};
|
||
|
|
||
|
var allFiles = [].concat(
|
||
|
fs.readdirSync("."),
|
||
|
fs.readdirSync("form").map(function(fname){ return "form/"+fname; }),
|
||
|
fs.readdirSync("layout").map(function(fname){ return "layout/"+fname; })
|
||
|
),
|
||
|
lessFiles = allFiles.filter(function(name){ return name && name != "variables.less" && /\.less$/.test(name); });
|
||
|
|
||
|
lessFiles.forEach(function(fname){
|
||
|
console.log("=== " + fname);
|
||
|
fs.readFile(fname, 'utf-8', function(e, data){
|
||
|
if(e){
|
||
|
console.error("lessc: " + e.message);
|
||
|
process.exit(1);
|
||
|
}
|
||
|
|
||
|
new(less.Parser)({
|
||
|
paths: [path.dirname(fname)],
|
||
|
optimization: options.optimization,
|
||
|
filename: fname
|
||
|
}).parse(data, function(err, tree){
|
||
|
if(err){
|
||
|
less.writeError(err, options);
|
||
|
process.exit(1);
|
||
|
}else{
|
||
|
try{
|
||
|
var css = tree.toCSS({ compress: options.compress }),
|
||
|
outputFname = fname.replace('.less', '.css');
|
||
|
var fd = fs.openSync(outputFname, "w");
|
||
|
fs.writeSync(fd, css, 0, "utf8");
|
||
|
}catch(e){
|
||
|
less.writeError(e, options);
|
||
|
process.exit(2);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
});
|