J'essaie de configurer Babel pour Node v6.9.2. Je veux utiliser les constructions async
/await
.
Parce que je suis nouveau sur Babel et toutes les infrastructures Node, je ne sais pas comment le configurer correctement:
Quel préréglage dois-je utiliser? Node est déjà implémenté la plupart des fonctionnalités ES6. Je ne veux donc pas que Babel transpile les fonctionnalités déjà prises en charge par Node 6.9.x (fonctions fléchées, nouveau mécanisme d'importation, etc.) pour des raisons de performances.
Quels plugins dois-je inclure pour pouvoir utiliser async/wait? Là, j'ai également confondu, car après quelques recherches, j'ai trouvé plusieurs plugins: syntax-async-functions
, transform-async-to-generator
et encore plus.
Exemple de .babelrc
aidera.
Merci
Quel préréglage dois-je utiliser?
Vous n'avez pas besoin d'utiliser de préréglage. Les préréglages ne sont qu'une collection de plugins qui le rend plus facile à utiliser si vous souhaitez transpiler un ensemble de fonctionnalités (par exemple, tous les ES2015 avec preset-es2015
). Mais lorsque vous ne souhaitez transpiler qu'une sélection de ces fonctionnalités, vous n'incluez que les plugins correspondants.
Quels plugins dois-je inclure pour pouvoir utiliser async/wait?
Parce que Node 6 prend en charge les générateurs, vous pouvez utiliser transform-async-to-generator
avec ce qui suit .babelrc
:
{
"plugins": ["transform-async-to-generator"]
}
Et bien sûr, vous devrez ajouter des plugins si vous avez besoin de transpiler plus de fonctionnalités non prises en charge.
babel-preset-env
babel-preset-env détermine automatiquement les plugins dont vous avez besoin pour l'environnement spécifié. Cela n'inclura aucun plugin qui n'est pas nécessaire. Pour spécifier votre version Node version, vous utiliseriez cette .babelrc
:
{
"presets": [
["env", {
"targets": {
"node": "current"
}
}]
]
}
Utilisez le préréglage Babel pour Node 6.x:
Pour voir quelle fonctionnalité ES est prise en charge dans une version donnée Node, voir:
Pour la prise en charge de async
/await
en particulier, voir:
Si vous utilisez Node v7.x (la version actuelle), vous pouvez utiliser le --harmony
flag et utiliser async
/await
en natif sans transpilation.
Le noeud v8.x (disponible en version nocturne) n'a même pas besoin du --harmony
drapeau pour cela.
Mais notez que Node ne prend pas en charge import
/export
- pour savoir pourquoi voir: