Skip to content

Instantly share code, notes, and snippets.

@Kalyse
Created March 12, 2012 14:26
Show Gist options
  • Save Kalyse/2022275 to your computer and use it in GitHub Desktop.
Save Kalyse/2022275 to your computer and use it in GitHub Desktop.
Node Less Compiler
var fs = require('fs'), // file system access
path = require('path'),
less = require('less'); // less processor
var options = {
compress: true,
optimization: 1,
silent: false
};
var allFiles = [].concat(
fs.readdirSync("."),
fs.readdirSync("base").map(function(fname){ return "base/"+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);
}
}
});
});
});
console.log("Finished : ", lessFiles);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment