1 | // Script to process all the less files and convert them to CSS files |
---|
2 | // Run from themes/dijit/claro like: |
---|
3 | // |
---|
4 | // $ node compile.js |
---|
5 | |
---|
6 | var fs = require('fs'), // file system access |
---|
7 | path = require('path'), // get directory from file name |
---|
8 | less = require('../../../util/less/lib/less'); // less processor |
---|
9 | |
---|
10 | var options = { |
---|
11 | compress: false, |
---|
12 | optimization: 1, |
---|
13 | silent: false |
---|
14 | }; |
---|
15 | |
---|
16 | var allFiles = [].concat( |
---|
17 | fs.readdirSync("."), |
---|
18 | fs.readdirSync("form").map(function(fname){ return "form/"+fname; }), |
---|
19 | fs.readdirSync("layout").map(function(fname){ return "layout/"+fname; }) |
---|
20 | ), |
---|
21 | lessFiles = allFiles.filter(function(name){ return name && name != "variables.less" && /\.less$/.test(name); }); |
---|
22 | |
---|
23 | lessFiles.forEach(function(fname){ |
---|
24 | console.log("=== " + fname); |
---|
25 | fs.readFile(fname, 'utf-8', function(e, data){ |
---|
26 | if(e){ |
---|
27 | console.error("lessc: " + e.message); |
---|
28 | process.exit(1); |
---|
29 | } |
---|
30 | |
---|
31 | new(less.Parser)({ |
---|
32 | paths: [path.dirname(fname)], |
---|
33 | optimization: options.optimization, |
---|
34 | filename: fname |
---|
35 | }).parse(data, function(err, tree){ |
---|
36 | if(err){ |
---|
37 | less.writeError(err, options); |
---|
38 | process.exit(1); |
---|
39 | }else{ |
---|
40 | try{ |
---|
41 | var css = tree.toCSS({ compress: options.compress }), |
---|
42 | outputFname = fname.replace('.less', '.css'); |
---|
43 | var fd = fs.openSync(outputFname, "w"); |
---|
44 | fs.writeSync(fd, css, 0, "utf8"); |
---|
45 | }catch(e){ |
---|
46 | less.writeError(e, options); |
---|
47 | process.exit(2); |
---|
48 | } |
---|
49 | } |
---|
50 | }); |
---|
51 | }); |
---|
52 | }); |
---|