disableSourceOfProjectReferenceRedirect în TypeScript

Trei opțiuni pentru editor în proiectele cu references: cum se încarcă proiectele referite, ca editorul să fie mai rapid.

Sintaxă
"compilerOptions": {
  "disableSourceOfProjectReferenceRedirect": true,
  "disableSolutionSearching": true,
  "disableReferencedProjectLoad": true
}

Ce face disableSourceOfProjectReferenceRedirect

Aceste opțiuni schimbă doar comportamentul editorului (serverul de limbaj TypeScript din VS Code și alte editoare), nu și compilarea cu tsc. Sunt utile în monorepo-uri mari, unde editorul încarcă prea multe proiecte și devine lent.

disableSourceOfProjectReferenceRedirect: implicit, editorul citește direct sursele .ts ale proiectelor referite (modificările se văd imediat). Cu true, folosește fișierele .d.ts generate, ca tsc; e mai rapid, dar trebuie să construiești proiectele ca să vezi schimbările. disableSolutionSearching: la „Find All References” sau „Go to Definition”, editorul nu mai caută proiectul-rădăcină care conține acest proiect. disableReferencedProjectLoad: editorul nu mai încarcă automat toate proiectele referite, ci doar pe cele deschise.

Toate trei sunt implicit false.

Parametri

Parametru Descriere
disableSourceOfProjectReferenceRedirect Editorul folosește .d.ts, nu sursele proiectelor referite.
disableSolutionSearching Proiectul nu este căutat ca parte dintr-o soluție mai mare.
disableReferencedProjectLoad Proiectele referite nu sunt încărcate automat în editor.

Exemple

Exemplul 1: Opțiunile nu schimbă compilarea

tsc acceptă opțiunile și compilează la fel. Efectul se vede doar în editor.

// tsconfig.json
{
  "compilerOptions": {
    "module": "nodenext",
    "target": "es2022",
    "noEmit": true,
    "disableSourceOfProjectReferenceRedirect": true,
    "disableSolutionSearching": true,
    "disableReferencedProjectLoad": true
  }
}

Rezultat (tsc 5.9)

$ npx tsc && echo "compilare fără erori"
compilare fără erori

Greșeli frecvente

  • Să pornești disableSourceOfProjectReferenceRedirect și să te miri că editorul nu vede o funcție nouă din alt proiect. Rulează tsc -b ca să se actualizeze .d.ts-urile.

Comenzi înrudite

  • composite: Pregătește un proiect pentru a fi folosit prin „references” de alte proiecte și construit cu tsc -b.
  • disableSizeLimit: Scoate limita de 20 MB de cod JavaScript pe care serverul de limbaj din editor o încarcă într-un proiect.
  • plugins: Lista de pluginuri pentru serverul de limbaj din editor (completare, erori suplimentare); tsc le ignoră la compilare.