62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
|
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
|
see: http://dojotoolkit.org/license for details
|
|
*/
|
|
|
|
|
|
// Script to process all the less files and convert them to CSS files
|
|
// Run from themes/dijit/claro like:
|
|
//
|
|
// $ node compile.js
|
|
|
|
// Some guesses for where to find less
|
|
require.paths.unshift('/opt/less/lib', 'C:/less/lib');
|
|
|
|
var fs = require('fs'), // file system access
|
|
path = require('path'), // get directory from file name
|
|
less = require('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');
|
|
fd = fs.openSync(outputFname, "w");
|
|
fs.writeSync(fd, css, 0, "utf8");
|
|
}catch(e){
|
|
less.writeError(e, options);
|
|
process.exit(2);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|