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