2017-02-02 4 views
1

私は非同期モジュールを通していくつかのコードを実行するbabelプラグインに取り組んでいます。パスを変更する前にその結果を待つ必要があります。Babel Plugin Visitorで非同期コードを実行することはできますか?

visitor: { 
    TaggedTemplateExpression(path) { 
    if (path.node.tag.name !== 'Style') return; 

    ProcessStyle(path).then((data) => { 
     path.replaceWith(t.StringLiteral(data.data)); 
    }); 
    }, 
} 

これは現在可能ですか?

答えて

3

BabelのAPI、たとえばbabel.transform()は、結果として変換されたものを同期的に返します。これは、プラグインが非同期になる方法がないことを意味します。これは、Babel自体が完全に同期しているためです。

要件に応じて、child_process.execSyncを使用して、Babelをブロックしながら別のノードプロセスを実行して非同期作業を実行することを検討できます。

+0

'child_process.execSync'が完全にトリックでした!ありがとう! –

関連する問題