TypeScript 从tsc --build输出的简洁模式

j7dteeu8  于 6个月前  发布在  TypeScript
关注(0)|答案(4)|浏览(51)

搜索词

tsc --build mode console logging output verbose

建议

在运行 tsc -b 时,设置一个介于 verbose 和 "nothing" 之间的中间选项。

用例

最初的反馈是,如果没有错误," tsc -b " 应该默认不打印任何内容(这是一个合理的起点)。然而,了解发生了什么情况是很不错的,尤其是因为一个 tsc -b 调用可能需要相当长的时间,具体取决于最新的信息。
今天的用户可以通过使用 --verbose 来获得更多的输出,它会打印一些相当详细的信息:

message TS6350: Project 'tsconfig.json' is out of date because oldest output 'lib/fetch.js' is older than newest input 'src/fetch.ts'

verbose 的输出主要是用来解释为什么某事会发生;没有中间设置可以简单地说“解释正在发生什么”。
--watch 下,tsc -b 会打印错误,但不会打印“没有错误”,所以你无法真正知道编译是否成功,或者 tsc 只是错过了一个文件更改。

建议

--terse 在默认(静默)和 verbose 之间找到了一个平衡点。它的简称将是 -t,这与我近期内能想到的添加的内容不冲突。

示例

> tsc -b -t src
message TS6350: 'src/compiler' is up-to-date
message TS6350: 'src/services' is up-to-date
message TS6351: Building 'src/server'...
message TS6351: Building 'src/tests'...
message TS6352: Build completed
> tsc -b -t -w src
message TS6350: All projects are up to date
message TS6351: 'src/compiler' was modified, building...

src/compiler/parser.ts:21:1 - error TS1128: Declaration or statement expected.

21 ?
   ~

message TS6351: 'src/compiler' was modified, building...
message TS6351: Building 'src/server'...
message TS6351: Building 'src/tests'...
message TS6352: All projects are up to date

检查清单

我的建议满足以下准则:

  • 这不会对现有的 TypeScript / JavaScript 代码造成破坏性的改变
  • 这不会改变现有 JavaScript 代码的运行时行为
  • 这可以在不根据表达式的类型发出不同的 JS 的情况下实现
  • 这不是一个运行时特性(例如新的表达式级语法)
sgtfey8w

sgtfey8w1#

这是否与#25286相同?如果是,请随意关闭它。

osh3o9ms

osh3o9ms2#

节点CLI约定对于长时间运行的CLI反馈(我在这里想到的是npmwebpack)似乎是要重写(例如log-update/ ora),如果stdout.isTTY。TS是否想避免引入这个?
在watch的情况下,它可以添加然后删除Building ...行。
无论如何,这似乎就是正确的输出级别。作为一个小改动,我更喜欢“Building”行更规律一些,这样更容易扫描,例如(如果我正确地阅读了示例):

> tsc -b -t -w src
message TS6350: All projects are up to date
message TS6351: Building modified project 'src/compiler'...

src/compiler/parser.ts:21:1 - error TS1128: Declaration or statement expected.

21 ?
   ~

message TS6351: Building modified project 'src/compiler'...
message TS6351: Building dependent project 'src/server'...
message TS6351: Building dependent project 'src/tests'...
message TS6352: All projects are up to date
zkure5ic

zkure5ic3#

我非常喜欢这个标志。目前,我有一个构建过程,使用Babel将TS库进行转译,显示每个正在构建/移动的文件的输出。然后,我使用tsc生成*.d.ts文件,以便在其他包中使用。如果能看到每个输出文件的构建和移动过程,就像Babel展示的那样,那就太棒了。

编辑:实际上,我发现--listEmittedFiles正好符合我想要的行为。然而,似乎列表是在处理结束时输出的,而不是在过程中。如果能在处理过程中输出就更好了。不过,目前来说,--listEmittedFiles对我来说已经足够了。

7uhlpewt

7uhlpewt4#

距离上次评论已经过去了两年半。有任何更新吗?

相关问题