AST学习-认识path和node
认识path和node
path(路径)常用操作
获取当前路径所对应的源代码
1 2 3 4 5 6
| const vistor = { VariableDeclaration(path) { console.log(path.toString()) } }
|
判断path是什么type
1 2 3 4 5 6
| const vistor = { VariableDeclarator(path){ console.log(path.isVariableDeclarator()) } }
|
获取path的上一级路径
1 2
| let parent = path.parentPath; console.log(parent.node)
|
获取path的子路径
删除path
替换path
1 2 3 4 5 6 7 8
| const t = require("@babel/types")
const vistor = { VariableDeclarator(path){ path.get('init').replaceWith(t.NumericLiteral(996)); } }
|
path源码
1
| @babel\traverse\lib\path
|
node(节点)常用操作
获取当前节点所对应的源代码
1 2
| const generator = require("@babel/generator").default; let {code} = generator(node);
|
删除节点
访问子节点
1 2 3 4 5 6 7 8 9 10 11 12
| const vistor = { VariableDeclarator(path){ console.log(path.node.init.value)
console.log(JSON.stringify(path.node)) } }
var ast = parser.parse(jscode); traverse(ast, vistor)
|