TypeScript
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.
Örnek çözümü göster
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(", "));
Kendini test et
-
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
- tsconfig dosyasına olan ihtiyacı kaldırır
Cevabı göster
Yalnızca değişen ve bağımlı projeleri yeniden derler — 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.
-
Artımlı bayrak
{
"compilerOptions": {
"composite": true,
"____": true
}
}
Cevabı göster
{
"compilerOptions": {
"composite": true,
"incremental": true
}
}
-
Yapı parçaları
- 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
Sıradaki ders: Özet - Performans