Path mapping
- TypeScript kursu
- Uzman
- Ders 16/35
- 4 dk
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
// 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
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
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["____/*"]
}
}
}
{
"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ü |