CodeBlanks Logo Icon CodeBlanks

Path mapping

paths ile modül eşleştirmeyi öğrenirsin.

Path mapping nedir?

paths, import belirticilerini gerçek dosya yollarına eşler; böylece uzun göreceli yollar yerine kısa alias'lar kullanabilirsin. baseUrl alanı, paths öğelerinin kökünü belirler ve genellikle . olarak ayarlanır.

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"],
      "@lib/*": ["lib/*"]
    }
  }
}

Burada @/utils, src/utils'e çözümlenir.

Alias çözümleme

Bir alias * joker karakteri içerir; çözümleme sırasında jokerin sol tarafı eşleşir, sağ tarafı yerine konur. Örneğin "@/*": ["src/*"] için @/utils/helpers, src/utils/helpers'a dönüşür.

const paths = { "@/*": ["src/*"] };
// "@/utils" → "src/utils"

Birden çok hedef varsa, ilk bulunan kullanılır.

Uygulama Alias'ı çöz

Bir resolveAlias fonksiyonu yaz: specifier ve paths alsın. Her alias'taki *'i çıkarıp önek eşleşmesi yapsın; eşleşirse hedefteki *'i kalanla değiştirip döndürsün. paths = { "@/*": ["src/*"] } için resolveAlias("@/utils", paths) sonucunu yazdır.

Başlangıç kodu

index.ts
// resolveAlias: alias'ı gerçek yola çevirir
// her alias'taki *'i çıkarıp önek eşleşmesi yap
// eşleşirse hedefte *'i kalanla değiştir
// "@/utils" ve { "@/*": ["src/*"] } için sonucu yazdır

Örnek çözüm

index.ts
function resolveAlias(specifier: string, paths: Record<string, string[]>): string {
  for (const [alias, targets] of Object.entries(paths)) {
    const prefix = alias.replace("*", "");
    if (specifier.startsWith(prefix)) {
      const rest = specifier.slice(prefix.length);
      return targets[0].replace("*", "") + rest;
    }
  }
  return specifier;
}

const paths = { "@/*": ["src/*"] };
console.log(resolveAlias("@/utils", paths));

Beklenen çıktı

src/utils

Soru ve cevaplar

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

1 `paths` kullanırken hangi alan kök dizini belirler?

  • baseUrl Doğru cevap
  • outDir
  • baseDir
  • rootDir

Açıklama: baseUrl, paths öğelerinin çözümlendiği kökü belirler; rootDir çıktı köküdür, outDir çıktı dizini, baseDir ise geçerli bir seçenek değildir.

2 Alias tanımla

Soru
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["____/*"]
    }
  }
}
Cevap
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}

Açıklama: alias'ın hedefi kaynak kök dizini olmalı; dist çıktı, lib isteğe bağlı ve node_modules bağımlılık dizinidir, alias hedefi olarak uygun değildir.

3 Path mapping parçaları

Kavram Anlamı
paths alias eşlemelerini listeler
baseUrl çözümleme kökünü belirler
* joker karakter
@/* örnek alias örüntüsü

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