在Babel中使用acyns /等待Node 6
我正在尝试为Node v6.9.2configurationBabel。 我想要使用async
/ await
结构。
因为我是Babel和所有Node基础设施的新手,所以我很困惑如何正确configuration它:
-
我应该使用什么预设? 节点已经实现了大部分的ES6function。 所以我不希望Babel出于性能方面的原因而转储已经被Node 6.9.x支持的function(箭头函数,新的导入机制等等)。
-
我应该包含哪些插件,以便我可以使用async / await? 在那里我也困惑,因为经过一番研究,我发现了几个插件:
syntax-async-functions
,transform-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模块的规范?
- 从诺言结果导出节点模块