Ce face --watch
tsc --watch (sau -w) compilează proiectul, apoi rămâne pornit și urmărește fișierele. La fiecare modificare recompilează doar ce e nevoie și afișează erorile. Se oprește cu Ctrl+C. Funcționează și cu tsc -b -w pentru proiecte cu referințe.
Implicit, la fiecare recompilare tsc golește ecranul terminalului. preserveWatchOutput (implicit false) păstrează rezultatele anterioare, util când rulezi mai multe procese în același terminal. assumeChangesOnlyAffectDirectDependencies (implicit false) face recompilarea mai rapidă în proiecte mari: după modificarea unui fișier, re-verifică doar fișierele care îl importă direct, nu tot lanțul. Poate rata erori din fișiere mai depărtate, care apar abia la o compilare completă.
Felul în care sunt urmărite fișierele se poate regla în secțiunea watchOptions din tsconfig (watchFile, watchDirectory, excludeDirectories).
Parametri
| Parametru | Descriere |
|---|---|
--watch, -w |
Modul watch (doar în linia de comandă). |
preserveWatchOutput |
Nu golește ecranul la recompilare. Implicit false. |
assumeChangesOnlyAffectDirectDependencies |
Re-verifică doar dependențele directe ale fișierului modificat. Implicit false. |
Exemple
Exemplul 1: O modificare cu eroare
Proiectul pornește fără erori. Apoi index.ts este salvat cu o greșeală, iar tsc recompilează singur. Cu --preserveWatchOutput, primul mesaj rămâne pe ecran.
// tsconfig.json
{
"compilerOptions": {
"module": "nodenext",
"target": "es2022",
"outDir": "dist"
}
}
// index.ts, după modificare
const x: number = "a";
export {};
Rezultat (ora diferă la fiecare rulare)
$ npx tsc -w --preserveWatchOutput
7:50:31 PM - Starting compilation in watch mode...
7:50:31 PM - Found 0 errors. Watching for file changes.
7:50:35 PM - File change detected. Starting incremental compilation...
index.ts(1,7): error TS2322: Type 'string' is not assignable to type 'number'.
7:50:35 PM - Found 1 error. Watching for file changes.
Greșeli frecvente
- Să rulezi
tsc -wși un bundler în watch care scriu în același director. Cele două se pot încurca reciproc la fiecare salvare. - Să lași
assumeChangesOnlyAffectDirectDependenciespornit în CI. Acolo vrei verificarea completă.
Comenzi înrudite
incremental: Salvează informații despre ultima compilare într-un fișier .tsbuildinfo, ca următoarea compilare să refacă doar ce s-a schimbat.composite: Pregătește un proiect pentru a fi folosit prin „references” de alte proiecte și construit cu tsc -b.noEmitOnError: Nu scrie niciun fișier dacă există erori de tip; implicit, tsc scrie JavaScript-ul chiar și cu erori.pretty: Afișează erorile cu culori și cu rândul de cod subliniat; implicit pornit când ieșirea este un terminal.