TSC 命令需要 372 秒才能完成

TSC command taking 372s to complete

我有一个非常小的 TypeScript Firebase 存储库,用于云功能(我的 src 目录中总共有 6 个文件)。 tsc 命令需要很长时间才能完成,所以我 运行 使用 --diagnotics 得到了这个输出:

functions % tsc --extendedDiagnostics
Files:                         290
Lines of Library:            28331
Lines of Definitions:       110562
Lines of TypeScript:           123
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:           117266
Nodes of Definitions:       336850
Nodes of TypeScript:           659
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                167151
Symbols:                    183758
Types:                       53351
Instantiations:              68377
Memory used:               209026K
Assignability cache size:    12195
Identity cache size:           223
Subtype cache size:             34
Strict subtype cache size:       0
I/O Read time:               0.58s
Parse time:                 93.62s
ResolveModule time:          9.01s
ResolveTypeReference time:   1.41s
Program time:              107.81s
Bind time:                  49.14s
Check time:                212.69s
transformTime time:          0.42s
Source Map time:             0.26s
commentTime time:            0.21s
I/O Write time:              0.01s
printTime time:              2.52s
Emit time:                   2.53s
Total time:                372.17s

从我在网上看到的情况来看,这似乎真的很高。我用 Google 搜索了一下,有人建议在我的 tsconfig.json 中包含 "typeRoots": [ "node_modules/@types" ] 或确保 include 只有我的 src 目录,以及更新到最新的 TS(运行 4.4.2) 但是 none 这有帮助。我不是 Node 工程师,所以不确定从哪里开始。

如果有帮助,这是我的 tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "lib",
    "sourceMap": true,
    "strict": true,
    "target": "es2017",
    "typeRoots": [ "node_modules/@types" ],
  },
  "compileOnSave": true,
  "include": [
    "src"
  ]
}

经过进一步试验,我尝试安装 Node 的 current(非 LTS)版本,因为它明确将 arm64 列为架构(我是 运行 M1 Mac ),一切都 运行 快如闪电。

运行 Node 的前沿版本对我来说是不可能的,因为 Firebase 还不支持它,但我发现 this post 推荐 运行 Terminal in Open in Rosetta 模式来规避这些问题。这解决了问题。