diagnostics în TypeScript

tsconfig: diagnosticare TypeScript 1.x

Afișează după compilare statistici: câte fișiere, rânduri și tipuri, memoria folosită și timpul fiecărei etape.

Sintaxă
tsc --diagnostics
tsc --extendedDiagnostics

Ce face diagnostics

Când compilarea devine lentă, primul pas este să afli unde se pierde timpul. --diagnostics afișează numărul de fișiere, rânduri, simboluri și tipuri, memoria folosită și timpul pentru citire, parsare, legare (bind), verificare (check) și emitere.

--extendedDiagnostics dă mai multe detalii: câte rânduri sunt din biblioteci, din declarații, din TypeScript și din JavaScript, mărimea cache-urilor și timpi separați pentru mai multe etape. Dacă „Lines of Definitions” este uriaș, skipLibCheck sau types pot ajuta. Ambele sunt implicit false.

Parametri

Parametru Descriere
--diagnostics Statistici de bază.
--extendedDiagnostics Statistici detaliate.

Exemple

Exemplul 1: Un proiect cu un singur fișier

Aproape toate cele peste 51.000 de rânduri sunt din bibliotecile standard (lib.*.d.ts); proiectul are doar 2 rânduri. Timpii diferă de la un calculator la altul și de la o rulare la alta.

// tsconfig.json
{
  "compilerOptions": {
    "module": "nodenext",
    "target": "es2022",
    "noEmit": true,
    "types": []
  }
}

// index.ts
console.log(1);

Rezultat posibil (timpii și cifrele diferă la fiecare rulare)

$ npx tsc --diagnostics
Files:              64
Lines:           51128
Identifiers:     45618
Symbols:         35597
Types:           15359
Instantiations:   4645
Memory used:    89001K
I/O read:        0.01s
I/O write:       0.00s
Parse time:      0.12s
Bind time:       0.04s
Check time:      0.37s
Emit time:       0.00s
Total time:      0.53s

$ npx tsc --extendedDiagnostics | head -7
Files:                         64
Lines of Library:           51126
Lines of Definitions:           0
Lines of TypeScript:            2
Lines of JavaScript:            0
Lines of JSON:                  0
Lines of Other:                 0

Greșeli frecvente

  • Să compari timpii din două rulări consecutive cu incremental pornit. A doua rulare poate sări peste verificare și pare mult mai rapidă.

Comenzi înrudite

  • generateTrace: Scrie fișiere pentru analiza detaliată a performanței: urmă de evenimente și lista tipurilor, sau un profil CPU V8.
  • skipLibCheck: Nu mai verifică erorile din fișierele .d.ts (ale pachetelor și ale proiectului); compilarea devine mai rapidă.
  • incremental: Salvează informații despre ultima compilare într-un fișier .tsbuildinfo, ca următoarea compilare să refacă doar ce s-a schimbat.
  • --listFilesOnly: Afișează fișierele care fac parte din compilare; –listFilesOnly se oprește aici, –listFiles compilează și apoi le afișează.