outDir în TypeScript

Directorul în care tsc scrie fișierele generate, cu aceeași structură de subdirectoare ca sursele.

Sintaxă
"compilerOptions": { "outDir": "./dist" }

tsc --outDir dist

Ce face outDir

Fără outDir, tsc scrie fiecare .js lângă fișierul .ts din care provine, amestecând sursele cu rezultatul. Cu outDir, toate fișierele generate (.js, .d.ts, .map) ajung într-un director separat, de obicei dist sau build, ușor de șters și de ignorat în git.

Structura de subdirectoare se păstrează, pornind de la rootDir (scrisă sau calculată). Nu are valoare implicită. Pune directorul și în .gitignore; tsc îl exclude automat din include.

Parametri

Parametru Descriere
"cale" Directorul de ieșire, relativ la tsconfig.json.

Exemple

Exemplul 1: Cu și fără outDir

Cu outDir, fișierele ajung în dist/. Fără (--outDir null), apar lângă surse, în src/.

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

// src/index.ts
import { a } from "./util/a.js";
console.log(a);

// src/util/a.ts
export const a = 1;

Rezultat (tsc 5.9)

$ npx tsc && find . -name '*.js' | sort
./dist/index.js
./dist/util/a.js

$ rm -rf dist && npx tsc --outDir null && find . -name '*.js' | sort
./src/index.js
./src/util/a.js

Greșeli frecvente

  • Să ștergi un fișier .ts și să uiți că vechiul .js rămâne în dist. Golește directorul înainte de un build curat.
  • Să pornești allowJs fără outDir: tsc ar suprascrie fișierele .js sursă (TS5055).

Comenzi înrudite

  • rootDir: Spune care director este rădăcina surselor; structura de sub el se păstrează în outDir.
  • declarationDir: Directorul în care se scriu fișierele .d.ts, separat de outDir unde ajunge JavaScript-ul.
  • outFile: Pune tot JavaScript-ul generat într-un singur fișier; merge doar cu scripturi globale sau cu module amd/system.
  • allowJs: Permite fișiere .js în proiectul TypeScript: pot fi importate din .ts, sunt copiate în outDir și au tipuri deduse.