搜索词
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 的情况下实现
- 这不是一个运行时特性(例如新的表达式级语法)
4条答案
按热度按时间sgtfey8w1#
这是否与#25286相同?如果是,请随意关闭它。
osh3o9ms2#
节点CLI约定对于长时间运行的CLI反馈(我在这里想到的是
npm
和webpack
)似乎是要重写(例如log-update
/ora
),如果stdout.isTTY
。TS是否想避免引入这个?在watch的情况下,它可以添加然后删除
Building ...
行。无论如何,这似乎就是正确的输出级别。作为一个小改动,我更喜欢“Building”行更规律一些,这样更容易扫描,例如(如果我正确地阅读了示例):
zkure5ic3#
我非常喜欢这个标志。目前,我有一个构建过程,使用Babel将TS库进行转译,显示每个正在构建/移动的文件的输出。然后,我使用tsc生成*.d.ts文件,以便在其他包中使用。如果能看到每个输出文件的构建和移动过程,就像Babel展示的那样,那就太棒了。
编辑:实际上,我发现
--listEmittedFiles
正好符合我想要的行为。然而,似乎列表是在处理结束时输出的,而不是在过程中。如果能在处理过程中输出就更好了。不过,目前来说,--listEmittedFiles
对我来说已经足够了。7uhlpewt4#
距离上次评论已经过去了两年半。有任何更新吗?