8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

是否可以强制 TypeScript‘tsc’在第一次出现错误时提前退出?

lava 1月前

21 0

我们有一个巨大的 TS monorepo,我们在 CI 环境中使用合并队列将 PR 合并到其中。类型检查作业是合并队列 CI 的一大瓶颈,耗时 15 分钟。类型检查作业的执行时间非常长,需要 15 分钟。

我们有一个巨大的 TS monorepo,我们在 CI 环境中使用合并队列将 PR 合并到其中。

typecheck 作业是合并队列 CI 的很大瓶颈,耗时 15 分钟。

typecheck 作业运行 yarn tsc -p 。根据我在遥测中观察到的情况, tsc 默认情况下会分析 整个代码库 ,并且只有在完成后才会报告任何错误。因此,无论 typecheck 是 还是 ,它都需要 15 分钟的固定时间。

是否可以让 tsc 在第一次错误时抛出错误并立即退出?

在 CI/合并队列的范围内,一旦出现 任何错误, 我希望类型检查作业退出,即使可能还会有更多错误;这是一个很好的权衡:通过提前退出,它不会无用地阻止其后面的所有 PR,这将提高合并队列的吞吐量。并且 PR 被拒绝的人将被要求重新确定他们的 PR 并检查所有错误。这会给 PR 被拒绝的人带来一些额外的负担,但没关系。

注意:我知道“项目参考”,我们正在研究这个问题,但由于需要迁移的规模,目前还很遥远。请参阅以下回复之一的评论。

帖子版权声明 1、本帖标题:是否可以强制 TypeScript‘tsc’在第一次出现错误时提前退出?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由lava在本站《typescript》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您是否考虑过使用 项目引用 ?只要您缓存已发出的声明,它就会显著加快您的构建过程。就我个人而言,我还使用它对我的代码库的不同部分(生产代码、测试、配置等)进行类型检查,并使用不同的设置(特别是:不同的全局变量)。

    无论如何,一旦你将项目引用¹与新的构建模式 ( tsc --build ) 结合使用,在 TypeScript <5.6 中,tsc 将在第一个出现错误的项目后自动中止。在最近发布的 TypeScript 5.6 中, you need to run tsc with --stopOnBuildErrors .

    ¹) 也许这甚至适用于单个项目,虽然尚未测试过,但我怀疑 tsc 它将始终完成当前项目并且之后才停止。

  • 我们确实使用了项目引用 + turbo。事实上,我们有两个 CI 作业,经典完整类型检查和带 turbo 的并行类型检查。然而,由于我们正处于迁移过程中,turbo 所花费的时间在缓存命中率上变化很大。在最好的情况下,它比经典类型检查稍快,但在最坏的情况下,它慢几倍。目前,我们在合并队列中使用经典类型检查,原因就在于此。

  • @jakub.g 不幸的是,我不熟悉 Turbo 提供的类型检查并行化。您是说它在后台使用了 tsc + 项目引用吗?

返回
作者最近主题: