Javascript 如何让Babel输出文件';是阿斯特吗?
有没有办法让Babel将文件的AST输出为JSON或类似格式,而不是将其压缩回JS 原因是我希望能够做一些简单的静态分析/代码生成,虽然我的目标是最终在Babel插件(或类似插件)中完成,但我觉得如果我能从静态模型开始,事情会大大简化。你应该检查一下-它可以在构建树时将Javascript 如何让Babel输出文件';是阿斯特吗?,javascript,babeljs,Javascript,Babeljs,有没有办法让Babel将文件的AST输出为JSON或类似格式,而不是将其压缩回JS 原因是我希望能够做一些简单的静态分析/代码生成,虽然我的目标是最终在Babel插件(或类似插件)中完成,但我觉得如果我能从静态模型开始,事情会大大简化。你应该检查一下-它可以在构建树时将Babel作为解析器 npmjs页面中的示例: import ASTSource from "ast-source" import estraverse from "estraverse" import fs from "fs"
Babel
作为解析器
npmjs页面中的示例:
import ASTSource from "ast-source"
import estraverse from "estraverse"
import fs from "fs"
function transform(AST) {
var replaced = {
"type": "babel",
"value": 42,
"raw": "42"
};
return estraverse.replace(AST, {
enter: function (node) {
if (node.type === estraverse.Syntax.Literal) {
return replaced;
}
}
});
}
var source = new ASTSource(fs.readFileSync("./input.js", "utf-8"), {
filePath: "./input.js"
});
var output = source.transform(transform).output();
console.log(output.code);// => "var a = 42;"
console.dir(output.map.toString()); // => source map
fs.writeFileSync("./output.js", output.codeWithMap, "utf-8");
还有,巴贝尔自己的解析器:
npm安装-g巴比伦
babylon your_file.js>ast.json
节点API示例和源代码:
另外,对于AST参考和插件开发的入门来说,这可能很方便。您是只想解析代码还是想应用Babel的转换?有相当多的JS解析器。巴贝尔使用自己的橡子叉,称为巴比伦。看一看,哪些特性是流行的解析器(注:我维护该站点)。它实际上还允许您对Babel插件进行原型化(但还不适用于Babel v6)。具体来说,我希望能够运行Babel的解析器插件,以便输出可以包含(例如)流注释数据。不过,我希望在将输出转换为纯ES3/5树之前得到它。这正是我一直在寻找的!