Javascript 如何使用Babel将文字函数转换为AST

Javascript 如何使用Babel将文字函数转换为AST,javascript,babeljs,abstract-syntax-tree,babel-babylon,Javascript,Babeljs,Abstract Syntax Tree,Babel Babylon,我正在尝试使用Babel更新JS配置对象。 为此,我创建了一个巴别塔插件,其使用方式如下: const transform = require('@babel/standalone').transform const newCode = transform(code, { plugins: [ [ myBabelPlugin, { scripts: { action: 'create:merge', value:

我正在尝试使用Babel更新JS配置对象。 为此,我创建了一个巴别塔插件,其使用方式如下:

const transform = require('@babel/standalone').transform


const newCode = transform(code, {
  plugins: [
    [
      myBabelPlugin, {
        scripts: {
          action: 'create:merge',
          value: ['path/to/my/script.js']
        },
        someFunc: {
            action: 'create',
            function a(arg) { return true; }
        }
      }
    ]
  ]
}).code
在内部,它调用一个
toAst
函数,该函数迭代文本元素并将它们作为AST返回。我设法使它在某种程度上适用于函数,但我正在寻找一种更好的方法来处理函数-无论它们是匿名函数、箭头函数等等

当前“功能到AST”功能

if (typeof elem === 'function') {
  const ast = babylon.parse(elem.toString(), {
    plugins: [
      babelPluginTransformRuntime,
      babelPluginTransformArrowFunction
    ]
  })
  const { params, body } = ast.program.body[0]
  return t.functionExpression(
    null,
    params,
    body
  )
}
我这样做的原因是返回程序体将返回如下内容:


const config = {
  elem: function () {
    function myFunction() {
      ...
    }
  }
}
但感觉真的很不舒服。它还与匿名函数断开。任何关于正在发生的事情或代码的线索都将不胜感激

谢谢✌️