调查longTypeScript编译时间

前端之家收集整理的这篇文章主要介绍了调查longTypeScript编译时间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在调查为什么我的Angular 2.0 TypeScript项目的编译时间在相当短的时间内从大约4秒到大约15秒.

我遇到了非常有用但似乎没有文档的诊断开关.

例如,这里是我现在在我的项目上运行tsc –noEmit –diagnostics时所得到的:

Files:             231
Lines:           50872
Nodes:          170067
Identifiers:     65994
Symbols:       7712123
Types:          407677
Memory used:   600554K
I/O read:        0.43s
I/O write:       0.00s
Parse time:      1.13s
Bind time:       0.34s
Check time:     10.17s
Emit time:       0.00s
Total time:     11.64s

当我在早期版本的项目中运行相同的命令时,这是我得到的.

Files:             197
Lines:           30882
Nodes:          124208
Identifiers:     46201
Symbols:       5856945
Types:           10989
Memory used:    80412K
I/O read:        0.03s
I/O write:       0.00s
Parse time:      0.60s
Bind time:       0.27s
Check time:      0.93s
Emit time:       0.00s
Total time:      1.79s

类型的数量已经上升,检查时间也是如此.

是否可以从–diagnostics获取更详细/详细的输出

NodeJS v4.4.3,TypeScript v1.8.10.这是我的tsconfig.json

{
  "compilerOptions": {
    "target": "es5","module": "system","moduleResolution": "node","noImplicitAny": false,"noEmitOnError": false,"experimentalDecorators": true,"emitDecoratorMetadata": true,"removeComments": false
  },"exclude": [
    "node_modules","wwwroot","typings/main.d.ts","typings/main"
  ]
}
看来我在我的案子中发现了罪魁祸首.我做的很艰难的方式;我的过程:

找到使编译速度慢的提交.浏览历史commit-by-commit并检查编译时间.
>注释掉更改的代码,直到找到违规行.

在违规提交之前,我一直得到约2-4秒的编译时间,提交后13-17秒.

在我的情况下,我有一个类,其中有一个accessTokenGetter字段,它在构造函数中初始化:

export class JwtConfig {
    //...
    accessTokenGetter: () => Observable<string>;
    //...
      constructor(private config?: IJwtConfig) {
          // ...
          this.accessTokenGetter = this.config.accessTokenGetter || (() => Observable.of(null));
      }
}

初始化的第二部分|| (()=> Observable.of(null));造成缓慢.将其注释出来或添加类型注释可以将编译时间缩短.由于Observable是通用的,因此TypeScript编译器似乎需要一个提示来缩小需要做的类型检查.我的初始化现在读为:

//...
this.accessTokenGetter = this.config.accessTokenGetter || (() => Observable.of(<string>null));
//...

Observable.of(null as string))也似乎做了这个工作.还有其他几个地方添加了类型注释sped编译.

希望这有助于某人.

不过,如果编译器中有一个设施能够更快地回答答案,我很乐意听到.

原文链接:https://www.f2er.com/angularjs/142542.html

猜你在找的Angularjs相关文章