代码改变世界

@babel/traverse 使用方法小记

2019-10-10 13:55  罗小二  阅读(8199)  评论(0编辑  收藏  举报

@babel/traverse 

官网: https://babeljs.io/docs/en/babel-traverse

github:https://github.com/babel/babel/blob/master/packages/babel-traverse/test/traverse.js

 

了解一个东西最直接的方法就是看官网了解怎么用,看github源码Test模块代码的使用和测试。

 

@babel/traverse 可以用来遍历更新@babel/parser生成的AST

  • 对语法树中特定的节点进行操作(特殊节点的函数)
  • 进入节点(enter)
  • 退出节点  (exit)

 

traverse(ast, {
  CallExpression(p) {
    // 对语法树中特定的节点进行操作 参考@babel/types (特定节点类型)
    // CallExpression 特定节点
  },
  FunctionDeclaration: function(path) {
    // 对语法树中特定的节点进行操作 参考@babel/types (特定节点类型)
    // FunctionDeclaration 特定节点
  }
  // .....

  enter(path) {
    // 进入节点
    if (path.node.type === "ThisExpression") {
      // 对所有的操作
    };
  }
  exit(path) {
    // 退出节点
    console.log(`  exit ${path.type}(${path.key})`)
  }
})