本质将源代码转为树状结构。测试网站
webpack使用acore
babel使用babylon7.0
自己实现可以通过:
- esprima 将代码转为树状结构
- estraverse 遍历树状结构(使用深度优先遍历)
- escodegen 重新生成代码
let code =' function(){}'; let ast = esprima(code); estraverse.traverse(ast, { enter(node) { //可修改 }, leave(node) { } }); let r = esgencode.generate(ast);