jscodeshift - 如何在blockstatement的开头插入一个调用表达式

时间:2018-06-16 03:04:01

标签: javascript jscodeshift

我正在玩AST。我现在的目标是为文件中的每个块语句添加一个标识符。但是,ast探险家正在抛出一个我无法解读的错误。

function foo() {
   console.log('bar');
}

在mod之后

function foo() {
   baz
   console.log('bar');
}

AST

如何使用jscodeshift添加这样的东西。

1 个答案:

答案 0 :(得分:0)

您需要注意两件事

  • block语句由一组语句组成。您想添加到该数组之前。
  • 您不能在该数组中插入裸表达式(例如,标识符)。实际上,您必须创建一个ExpressionStatement

以下将起作用:

root
  .find(j.BlockStatement)
  .forEach((path) => {
    path.get('body').value.unshift(j.expressionStatement(j.identifier('bar')));
  });