incremental în TypeScript

Salvează informații despre ultima compilare într-un fișier .tsbuildinfo, ca următoarea compilare să refacă doar ce s-a schimbat.

Sintaxă
"compilerOptions": {
  "incremental": true,
  "tsBuildInfoFile": "./.cache/build.tsbuildinfo"
}

tsc --incremental
tsc -i

Ce face incremental

Cu incremental, tsc scrie la final un fișier .tsbuildinfo cu ce a verificat și ce a generat. La următoarea rulare citește fișierul, află ce s-a schimbat și sare peste restul. În proiecte mari, a doua compilare poate fi de câteva ori mai rapidă.

Locul fișierului: în outDir, dacă este setat, altfel lângă tsconfig.json; numele vine din numele configurației (tsconfig.tsbuildinfo). tsBuildInfoFile îl mută unde vrei. Fără tsconfig.json (doar cu fișiere în linia de comandă), --incremental cere --tsBuildInfoFile (TS5074).

Implicit este false, dar devine true când composite este true. Fișierul .tsbuildinfo nu trebuie pus în git.

Parametri

Parametru Descriere
incremental Salvează și folosește .tsbuildinfo.
tsBuildInfoFile Calea fișierului .tsbuildinfo.

Exemple

Exemplul 1: Două compilări la rând

La a doua rulare nu mai apare deloc rândul „Check time”: nimic nu s-a schimbat, deci verificarea a fost sărită. Fișierul tsconfig.tsbuildinfo a ajuns în dist, lângă index.js.

// tsconfig.json
{
  "compilerOptions": {
    "module": "nodenext",
    "target": "es2022",
    "incremental": true,
    "outDir": "dist"
  }
}

// index.ts
console.log("Bună");

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

$ npx tsc --extendedDiagnostics | grep -E 'Check time|Files:|Total time'
Files:                         64
Check time:                 0.30s
Total time:                 0.46s

$ ls dist
index.js
tsconfig.tsbuildinfo

$ npx tsc --extendedDiagnostics | grep -E 'Check time|Files:|Total time'
Files:                         64
Total time:                 0.15s

Exemplul 2: Alt loc pentru .tsbuildinfo și fără tsconfig

tsBuildInfoFile mută fișierul. Fără tsconfig.json, --incremental singur nu este acceptat.

npx tsc --tsBuildInfoFile .cache/build.tsbuildinfo

Rezultat (tsc 5.9)

$ npx tsc --tsBuildInfoFile .cache/build.tsbuildinfo && ls .cache
build.tsbuildinfo

$ npx tsc --incremental index.ts
error TS5074: Option '--incremental' can only be specified using tsconfig, emitting to single file or when option '--tsBuildInfoFile' is specified.

Greșeli frecvente

  • Să ștergi dist și să lași .tsbuildinfo în altă parte. tsc crede că fișierele există deja și nu le mai scrie; șterge și .tsbuildinfo.

Comenzi înrudite

  • composite: Pregătește un proiect pentru a fi folosit prin „references” de alte proiecte și construit cu tsc -b.
  • --watch: Pornește tsc în modul „watch”: recompilează automat la fiecare salvare a unui fișier.
  • diagnostics: Afișează după compilare statistici: câte fișiere, rânduri și tipuri, memoria folosită și timpul fiecărei etape.
  • outDir: Directorul în care tsc scrie fișierele generate, cu aceeași structură de subdirectoare ca sursele.