rootDirs în TypeScript

Tratează mai multe directoare ca pe unul singur la rezolvarea importurilor relative (pentru cod generat separat).

Sintaxă
"compilerOptions": {
  "rootDirs": ["src", "generat"]
}

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 rootDirs fă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.