2017-02-02 1 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

바벨의 API (예 : babel.transform())는 변환 된 결과를 동 기적으로 반환합니다. 즉, 바벨 자체가 완전히 동기 적이기 때문에 플러그인은 비동기가 될 수 없습니다.

요구 사항에 따라 child_process.execSync을 사용하면 바벨을 차단하면서 비동기 작업을 수행하기 위해 다른 노드 프로세스를 동 기적으로 실행할 수 있습니다.

+0

'child_process.execSync'가 완전히 트릭을했습니다! 감사! –

관련 문제