2017-02-02 24 views
1

我正在研究一個通過異步模塊運行一些代碼的babel插件。在修改路徑之前,我需要等待這個結果。是否可以在Babel插件訪問器中運行異步代碼?

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

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

這個最近有可能嗎?

回答

3

巴別的API,例如babel.transform(),同步返回結果轉換。這意味着插件無法成爲異步,因爲Babel本身是完全同步的。

根據您的要求,您可以考慮使用child_process.execSync來同步運行另一個節點進程以在阻塞Babel的同時執行異步工作。

+0

'child_process.execSync'完全做到了!謝謝! –

相關問題