compile.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. // Script to process all the less files and convert them to CSS files
  7. // Run from themes/dijit/claro like:
  8. //
  9. // $ node compile.js
  10. // Some guesses for where to find less
  11. require.paths.unshift('/opt/less/lib', 'C:/less/lib');
  12. var fs = require('fs'), // file system access
  13. path = require('path'), // get directory from file name
  14. less = require('less'); // less processor
  15. var options = {
  16. compress: false,
  17. optimization: 1,
  18. silent: false
  19. };
  20. var allFiles = [].concat(
  21. fs.readdirSync("."),
  22. fs.readdirSync("form").map(function(fname){ return "form/"+fname; }),
  23. fs.readdirSync("layout").map(function(fname){ return "layout/"+fname; })
  24. ),
  25. lessFiles = allFiles.filter(function(name){ return name && name != "variables.less" && /\.less$/.test(name); });
  26. lessFiles.forEach(function(fname){
  27. console.log("=== " + fname);
  28. fs.readFile(fname, 'utf-8', function (e, data){
  29. if(e){
  30. console.error("lessc: " + e.message);
  31. process.exit(1);
  32. }
  33. new(less.Parser)({
  34. paths: [path.dirname(fname)],
  35. optimization: options.optimization,
  36. filename: fname
  37. }).parse(data, function(err, tree){
  38. if(err){
  39. less.writeError(err, options);
  40. process.exit(1);
  41. }else{
  42. try{
  43. var css = tree.toCSS({ compress: options.compress }),
  44. outputFname = fname.replace('.less', '.css');
  45. fd = fs.openSync(outputFname, "w");
  46. fs.writeSync(fd, css, 0, "utf8");
  47. }catch(e){
  48. less.writeError(e, options);
  49. process.exit(2);
  50. }
  51. }
  52. });
  53. });
  54. });