TypeScript
Build mode
tsc --build ile proje derlemeyi öğrenirsin.
Build mode nedir?
tsc --build, projeleri bağımlılık sırasıyla derleyen ve artımlı önbellek kullanan bir moddur. Referans alınan projelerin derlenebilmesi için composite: true bayrağı gerekir; incremental: true ise .tsbuildinfo dosyasıyla yeniden derleme maliyetini düşürür.
// tsconfig.json
{
"compilerOptions": {
"composite": true,
"incremental": true,
"outDir": "dist"
}
}
Build modu yalnızca değişen projeleri yeniden derler; bu yüzden büyük monorepo'larda hız kazandırır.
composite ve incremental
composite: true, bir projenin başka projeler tarafından referans alınabilmesini sağlar; ayrıca declaration ve outDir ayarlarını zorunlu kılar. incremental: true ise derleme bilgilerini .tsbuildinfo dosyasına yazar ve sonraki derlemelerde yalnızca değişen dosyaları işler.
{
"compilerOptions": {
"composite": true,
"incremental": true,
"declaration": true,
"outDir": "dist"
}
}
Composite olmayan bir proje referans alınamaz; build modu hata verir.
Uygulama Build config doğrula
Bir validateBuildConfig fonksiyonu yaz: config nesnesinin composite ve incremental alanlarını kontrol etsin; eksikse hata dizisine ekleme yapsın. { composite: true, incremental: true } config'i için hata sayısını yazdır.
Örnek çözümü göster
function validateBuildConfig(config: { composite?: boolean; incremental?: boolean }): string[] {
const errors: string[] = [];
if (!config.composite) errors.push("composite must be true");
if (!config.incremental) errors.push("incremental recommended");
return errors;
}
const config = { composite: true, incremental: true };
console.log(validateBuildConfig(config).length);
Kendini test et
-
`tsc --build` hangi sırada derleme yapar?
- Yalnızca kök projeyi derler
- Rastgele sırayla paralel derler
- Bağımlılık sırasıyla, değişen projeleri yeniden derler
- Alfabetik sırayla tüm projeleri derler
Cevabı göster
Bağımlılık sırasıyla, değişen projeleri yeniden derler — Build modu önce bağımlılıkları çözer, sonra bağımlılık sırasıyla derler ve yalnızca değişen projeleri yeniden derler; alfabetik veya rastgele değildir.
-
Composite'i etkinleştir
{
"compilerOptions": {
"composite": ____,
"declaration": true
}
}
Cevabı göster
{
"compilerOptions": {
"composite": true,
"declaration": true
}
}
-
Build modu parçaları
- tsc --build
- projeleri bağımlılık sırasıyla derler
- composite: true
- referans alınabilirliği açar
- incremental: true
- .tsbuildinfo önbelleğini açar
- .tsbuildinfo
- artımlı derleme bilgisi
Sıradaki ders: Project references