在Babel中使用acyns /等待Node 6

我正在尝试为Node v6.9.2configurationBabel。 我想要使​​用async / await结构。

因为我是Babel和所有Node基础设施的新手,所以我很困惑如何正确configuration它:

  • 我应该使用什么预设? 节点已经实现了大部分的ES6function。 所以我不希望Babel出于性能方面的原因而转储已经被Node 6.9.x支持的function(箭头函数,新的导入机制等等)。

  • 我应该包含哪些插件,以便我可以使用async / await? 在那里我也困惑,因为经过一番研究,我发现了几个插件: syntax-async-functionstransform-async-to-generator等等。

.babelrc将有所帮助。

谢谢

我应该使用什么预设?

您不需要使用任何预设。 预设只是一个插件集合,如果您想要传输一组function(例如所有具有preset-es2015 ),则它们更容易使用。 但是,如果您只想传输这些function的select,则只包含相应的插件。

我应该包含哪些插件,以便我可以使用async / await?

由于节点6支持生成器,因此可以使用transform-async-to-generator以下.babelrc

 { "plugins": ["transform-async-to-generator"] } 

当然,如果需要传输更多不受支持的function,则需要添加插件。

替代的babel-preset-env

babel-preset-env自动确定你需要什么插件在指定的环境。 这将不包括任何不必要的插件。 要指定您当前的Node版本,您可以使用这个.babelrc

 { "presets": [ ["env", { "targets": { "node": "current" } }] ] } 

简短的回答

使用节点6.x的Babel预设:

长答案

要查看给定节点版本支持的ESfunction,请参阅:

对于async / await支持,请参阅:

如果您使用Node v7.x(当前版本),那么您可以使用--harmony标志并使用async / await本地方式而不需要转换。

节点v8.x(夜间版本可用)甚至不需要--harmony标志。

但请注意,Node不支持import / export – 要知道为什么看到:

  • 为什么有同步和asynchronous模块的规范?
  • 从诺言结果导出节点模块