web-dev-qa-db-ja.com

BabelでNode 6でasync / awaitを使用する

Node v6.9.2。async/awaitコンストラクトを使用したいためにBabelを設定しようとしています。

私はBabelが初めてであり、すべてのNodeインフラストラクチャであるため、適切に構成する方法を混乱させました。

  • どのプリセットを使用する必要がありますか? NodeはES6のほとんどの機能を既に実装しています。だから、Babelが既にサポートしている機能をNode 6.9.x(矢印関数、新しいインポートメカニズムなど)パフォーマンス上の理由から。

  • Async/awaitを使用するには、どのプラグインを含める必要がありますか?そこに私も混乱しました。いくつかの調査の後、いくつかのプラグインを見つけたからです:syntax-async-functionstransform-async-to-generatorなど。

の例 .babelrc 役立ちます。

ありがとう

17
MyTitle

どのプリセットを使用する必要がありますか?

プリセットを使用する必要はありません。プリセットはプラグインの単なるコレクションであり、一連の機能を変換したい場合に使いやすくなります(たとえば、すべての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"
      }
    }]
  ]
}
15
Michael Jungo

短い答え

Node 6.x:にBabelプリセットを使用します:

長い答え

特定のNodeバージョンでサポートされるES機能を確認するには、以下を参照してください。

特にasync/awaitサポートについては、以下を参照してください。

Node v7.x(現在のバージョン))を使用する場合、--harmonyフラグを使用し、トランスピレーションなしでasync/awaitをネイティブに使用できます。 。

Node v8.x(ナイトリービルドとして利用可能)は、そのために--harmonyフラグさえ必要としません。

ただし、Nodeはimport/exportをサポートしていません-知っているwhy 見る:

10
rsp