Plugins 是否可以在Babel插件访问者中运行异步代码?

Plugins 是否可以在Babel插件访问者中运行异步代码?,plugins,babeljs,Plugins,Babeljs,我正在开发一个babel插件,它通过一个异步模块运行一些代码。在修改路径之前,我需要等待该结果 visitor: { TaggedTemplateExpression(path) { if (path.node.tag.name !== 'Style') return; ProcessStyle(path).then((data) => { path.replaceWith(t.StringLiteral(data.data)); }); },

我正在开发一个babel插件,它通过一个异步模块运行一些代码。在修改路径之前,我需要等待该结果

visitor: {
  TaggedTemplateExpression(path) {
    if (path.node.tag.name !== 'Style') return;

    ProcessStyle(path).then((data) => {
      path.replaceWith(t.StringLiteral(data.data));
    });
  },
}
这在目前是可能的吗?

例如,巴贝尔的API会同步返回转换后的结果。这意味着插件没有异步的方式,因为Babel本身是完全同步的

根据您的需求,可以考虑使用<代码>子进程.ExcSyc><代码>同步运行另一个节点进程,在阻塞巴别塔时执行您的异步工作。

< P>

这将在单独的进程中运行异步代码,并通过网络连接进行通信

我发现使用child_进程和execSync/spawnSync很难做到这一点。我总是遇到缓冲区大小有限的问题,即使将maxBuffer设置为无穷大,也会导致不完整的数据传输和神秘的语法错误(大约1000个字符后代码行被截断)