53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								// Script to process all the less files and convert them to CSS files
							 | 
						||
| 
								 | 
							
								// Run from themes/dijit/claro like:
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//	$ node compile.js
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var fs = require('fs'),		// file system access
							 | 
						||
| 
								 | 
							
									path = require('path'),	// get directory from file name
							 | 
						||
| 
								 | 
							
									less = require('../../../util/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');
							 | 
						||
| 
								 | 
							
													var fd = fs.openSync(outputFname, "w");
							 | 
						||
| 
								 | 
							
													fs.writeSync(fd, css, 0, "utf8");
							 | 
						||
| 
								 | 
							
												}catch(e){
							 | 
						||
| 
								 | 
							
													less.writeError(e, options);
							 | 
						||
| 
								 | 
							
													process.exit(2);
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										});
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								});
							 |