Использование async/await в Node 6 с Babel
Я пытаюсь настроить Babel для Node v6.9.2. Я хочу использовать async
/await
строит.
Поскольку я новичок в Babel и всей инфраструктуре Node, я не понял, как правильно его настроить:
Какой пресет я должен использовать? В Node уже реализованы большинство функций ES6. Поэтому я не хочу, чтобы Babel передавал функции, уже поддерживаемые Node 6.9.x (функции стрелок, новый механизм импорта и т. Д.) По соображениям производительности.
Какие плагины я должен включить, чтобы я мог использовать async / await? Там я тоже запутался, потому что после некоторых исследований я нашел несколько плагинов:
syntax-async-functions
,transform-async-to-generator
и еще немного.
Пример .babelrc
поможет.
Спасибо
2 ответа
Какой пресет я должен использовать?
Вам не нужно использовать какие-либо предустановки. Пресеты - это просто набор плагинов, которые облегчают использование, если вы хотите использовать набор функций (например, все ES2015 с preset-es2015
). Но когда вы хотите передать только набор этих функций, вы включаете только соответствующие плагины.
Какие плагины я должен включить, чтобы я мог использовать async / await?
Поскольку Node 6 поддерживает генераторы, вы можете использовать transform-async-to-generator
со следующим .babelrc
:
{
"plugins": ["transform-async-to-generator"]
}
И, конечно, вам нужно будет добавить плагины, если вам нужно передать больше неподдерживаемых функций.
альтернатива babel-preset-env
babel-preset-env автоматически определяет, какие плагины вам нужны для указанной среды. Это не будет включать любые плагины, которые не нужны. Чтобы указать текущую версию Node, вы должны использовать это .babelrc
:
{
"presets": [
["env", {
"targets": {
"node": "current"
}
}]
]
}
Короткий ответ
Используйте предустановку Babel для Node 6.x:
Длинный ответ
Чтобы узнать, какая функция ES поддерживается в данной версии Node, смотрите:
За async
/await
поддержку, в частности, см.:
Если вы используете Node v7.x (текущая версия), то вы можете использовать --harmony
пометить и использовать async
/await
изначально без транспиляции.
Node v8.x (доступный как ночные сборки) даже не нуждается в --harmony
флаг для этого.
Но обратите внимание, что Node не поддерживает import
/export
- чтобы знать, зачем видеть: