2016-03-25 11 views

Antwort

0

Github user Vecerek had a similar need. less.parse kann mit einem Rückruf verwendet werden, um den AST zuzugreifen:

... Ich bin hier den eigentlichen Code setzen, dass den AST bekommen funktioniert, wird im Fall, dass jemand die gleiche Hürde konfrontiert und über diese kommt Problem.

var less = require('less') 
    , fs = require('fs') 
    , path = require('path'); 

var src = './test_import.less'; //some less source file 
var result = less.parse(fs.readFileSync(src).toString(), { 
    filename: path.resolve(src) 
}, function(e, tree) { 
    console.log(JSON.stringify(tree, null, 2)); 
}); 

Dieser Code-Schnipsel angepasst werden kann vernünftigerweise ein Versprechen Struktur zu verwenden, die ich mehr nützlich finden:

function lessAST(filename, options) { 
    options = options || {}; 
    options.filename = path.resolve(filename); 
    return new Promise(function (res, rej) { 
     less.parse(fs.readFileSync(filename).toString(), options, function (e, tree) { 
      if (e) { 
       rej(e); 
      } else { 
       res(tree); 
      } 
     }); 
    }); 
} 

Beispiel Nutzung:

lessAST('styles.less', { 
    ...options... 
}).then(function (tree) { 
    ...do stuff with the AST... 
}); 
Verwandte Themen