Yerleşik path modülü, dosya yollarını işletim sistemleri arasında doğru şekilde oluşturur ve değiştirir. / ile path dizelerini manuel olarak birleştirmek Windows'ta (backslash \ kullanır) başarısız olur ve kenar durumlarını yanlış işler — path bunların tümünü güvenilir bir şekilde yönetir.
String birleştirmenin sorunu
// ❌ fragile, OS-dependent, error-prone
const filePath = baseDir + "/" + "sub" + "/" + fileName;
// breaks on Windows (\), doubles slashes if baseDir ends in /, etc.
Çözüm: path.join
import path from "path";
// ✅ uses the correct separator for the OS, normalizes slashes
const filePath = path.join(baseDir, "sub", fileName);
// Linux/Mac: baseDir/sub/file.txt Windows: baseDir\sub\file.txt
path.join doğru ayırıcıyı ekler, kopyalı/arkasındaki eğik çizgileri daraltır ve ../. segmentlerini çözer.
Diğer temel path fonksiyonları
path.resolve("src", "app.js"); // → ABSOLUTE path from the cwd
path.basename("/a/b/file.txt"); // "file.txt"
path.dirname("/a/b/file.txt"); // "/a/b"
path.extname("file.txt"); // ".txt"
path.parse("/a/b/file.txt"); // { dir, base, name, ext }
path.sep; // "/" or "\" depending on OS
Geçerli dosyanın dizinini alma
// CommonJS — built-in globals
const configPath = path.join(__dirname, "config.json");
// ES Modules — __dirname doesn't exist; derive it from import.meta.url
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
Geçerli dosyaya göre yollar oluşturmak (__dirname ile veya ESM eşdeğeri) dosyalara başvurmanın güvenli yoludur — işlemin neredenbaşlatıldığı önemli değildir.
join vs resolve
path.join → just joins segments (relative stays relative)
path.resolve → produces an ABSOLUTE path (resolves from cwd / right-to-left)
Neden önemli
String birleştirme yerine path kullanmak, dosya işleme kodunu platformlar arası ve güçlü hale getirir — Mac/Linux'ta yazılan kod Windows'ta kırıldığında veya birleştirme hatalı yollar oluşturduğunda sıkça yaşanan bir hata kaynağıdır.
Bu küçük bir alışkanlık ancak çok büyük güvenilirlik faydaları sağlar, join vs resolve bilgisi ile ESM'de __dirname'i nasıl alacağını bilmek, dosya sistemi ile ilgilenen herhangi bir Node projesinde günlük yol gereksinimlerini karşılar.
