如何访问LESS生成的AST?

时间:2016-03-25 20:43:26

标签: node.js less abstract-syntax-tree

我想通过访问AST在LESS样式表上执行一些代码分析。 programmatic usage文档仅介绍了如何呈现文件或字符串。

如何访问less.js AST?

1 个答案:

答案 0 :(得分:0)

Github user Vecerek had a similar needless.parse可以与回调一起使用来访问AST:

  

...我将实际代码放在这里,这样可以获得AST,以防有人面临同样的障碍并遇到这个问题。

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));
});

这个片段可以合理地适应使用promise结构,我发现它更有用:

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);
            }
        });
    });
}

使用示例:

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