CodeBlanks Logo Icon CodeBlanks

Project structure

Project references ile performansı öğrenirsin.

Project references ile performans

Project references, büyük bir projeyi daha küçük, bağımsız derlenen alt projelere böler. Yalnızca değişen alt proje ve ona bağımlı olanlar yeniden derlenir; bu, büyük kod tabanlarında derleme süresini ciddi azaltır. Her alt proje composite: true ve kendi .tsbuildinfo önbelleğine sahiptir.

// app → core → utils
// utils değişirse: utils + core + app
// app değişirse: yalnız app

Build modu bağımlılık sırasını otomatik çözer.

Artımlı önbellek

Her alt proje, .tsbuildinfo dosyasına önceki derlemenin tür grafiğini yazar. Bir sonraki derlemede yalnızca değişen dosyalar ve onlardan etkilenen türler yeniden çözümlenir. Bu, büyük projelerde dakikalar yerine saniyeler kazandırır.

// core/.tsbuildinfo
// son derlemenin tür grafiği

Önbellek silinirse tam yeniden derleme yapılır.

Uygulama Yeniden derleme kapsamını hesapla

Bir computeRebuildScope fonksiyonu yaz: değişen projeler ve ters bağımlılık haritasını alsın. Değişen proje ve ona bağımlı olanları bir kümede toplayıp sıralı dizi olarak döndürsün. core değiştiğinde ve core → app bağımlılığı olduğunda app, core çıktısını üret.

Başlangıç kodu

index.ts
// değişen projeleri ve bağımlılarını bul
// bir kümede topla
// sıralı diziye çevir
// sonucu yazdır

Örnek çözüm

index.ts
function computeRebuildScope(changed: string[], reverseDeps: Record<string, string[]>): string[] {
  const rebuild = new Set<string>(changed);
  for (const file of changed) {
    for (const dependent of reverseDeps[file] || []) {
      rebuild.add(dependent);
    }
  }
  return Array.from(rebuild).sort();
}

const changed = ["core"];
const reverseDeps = { core: ["app"], utils: ["core"] };
console.log(computeRebuildScope(changed, reverseDeps).join(", "));

Beklenen çıktı

app, core

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Project references derleme süresini nasıl iyileştirir?

  • Tür denetimini tamamen kapatır
  • Paket boyutunu küçültür
  • Yalnızca değişen ve bağımlı projeleri yeniden derler Doğru cevap
  • tsconfig dosyasına olan ihtiyacı kaldırır

Açıklama: References, değişen proje ve bağımlılarını yeniden derleyerek artımlı derleme sağlar; tür denetimi kapanmaz, paket boyutu değişmez, tsconfig hala zorunludur.

2 Artımlı bayrak

Soru
{
  "compilerOptions": {
    "composite": true,
    "____": true
  }
}
Cevap
{
  "compilerOptions": {
    "composite": true,
    "incremental": true
  }
}

Açıklama: Artımlı derleme için incremental kullanılır; increment, cache ve fast geçerli seçenek adları değildir.

3 Yapı parçaları

Kavram Anlamı
Project references projeyi alt projelere böler
.tsbuildinfo tür grafiği önbelleği
composite: true referans alınabilirliği açar
Build modu bağımlılık sırasını çözer

Uzman bölümündeki tüm dersler