/* 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); } } }); }); });