Ce face rootDirs
Unele proiecte au fișiere generate automat (traduceri, tipuri pentru CSS, cod din GraphQL) într-un director separat, dar la build ajung lângă sursele normale. Cu rootDirs, tsc „suprapune” directoarele: src/index.ts poate importa "./mesaje" chiar dacă fișierul este în generat/mesaje.ts.
Opțiunea nu schimbă JavaScript-ul generat și nu mută fișiere. Doar îi spune lui tsc unde să mai caute un import relativ. Se poate seta doar în tsconfig.json, nu din linia de comandă (TS6064).
Parametri
| Parametru | Descriere |
|---|---|
["dir1", "dir2", ...] |
Directoarele tratate ca unul singur. Implicit: nesetat. |
Exemple
Exemplul 1: Import dintr-un director suprapus
src/index.ts importă "./mesaje", iar fișierul este în generat/. Cu rootDirs compilarea trece fără erori. Încercarea de a seta opțiunea din linia de comandă dă eroare.
// tsconfig.json
{
"compilerOptions": {
"rootDirs": ["src", "generat"],
"noEmit": true
}
}
// generat/mesaje.ts
export const mesaje = { salut: "Bună ziua!" };
// src/index.ts
import { mesaje } from "./mesaje";
console.log(mesaje.salut);
Rezultat (tsc 5.9)
$ npx tsc
$ npx tsc --rootDirs src
error TS6064: Option 'rootDirs' can only be specified in 'tsconfig.json' file or set to 'null' on command line.
Greșeli frecvente
- Să folosești
rootDirsfără ca build-ul să copieze fișierele în același director. tsc trece, dar la rulare importul nu găsește nimic.
Comenzi înrudite
rootDir: Spune care director este rădăcina surselor; structura de sub el se păstrează în outDir.paths: Definește prescurtări pentru importuri (de exemplu „@/utile/calcul” pentru ./src/utile/calcul) folosite la verificarea tipurilor.baseUrl: Directorul față de care tsc caută importurile fără ./ (de exemplu „utile/calcul”); nu schimbă JavaScript-ul generat.