【发布时间】:2019-07-23 22:44:43
【问题描述】:
Typescript 编译器 API 允许通过使用 ts.createWatchCompilerHost API 以编程方式创建手表编译器,Typescript 文档 here 中演示了它的使用示例。
此 API 接受回调作为其最后一个参数,该参数将在手表状态更改时调用,并提供一个描述手表状态更改的 Diagnostic 对象。
使用这些诊断事件,我试图区分compiling、success 和failure 状态。我已经检测到compiling 状态工作正常,但是在确定success 和failure 之间的区别时遇到了一个奇怪的问题。
我遇到的问题是由于诊断代码的应用如下。如果构建时出现 1 个错误,则提供代码 6193,否则提供代码 6194。这意味着如果没有错误(success)或有 2 个以上错误(failure),则提供代码 6194。这个逻辑可以在ts编译器here看到。
createWatchCompilerHost 的用户在构建时没有错误的情况和构建时出现 1+ 个错误的情况之间确定的预期方式是什么?
一个 hacky 解决方案是解析 diagnostic.messageText 以检查 Found 0 errors. 但这似乎非常脆弱,并且是我希望避免的解决方案。
【问题讨论】:
-
很奇怪,0 错误和 2+ 错误的诊断代码相同。编译器中的代码对我来说看起来不正确,但它已经完成了几次,所以也许它是正确的。你可能想在 typescript repo 中打开一个关于这个的问题,看看他们怎么说。
-
如果有人来这里想知道同样的事情,我已经在 github 上针对 typescript repo 提出了一个问题:Issue Link。
标签: typescript typescript-compiler-api