Sitemap
Oğuzhan Aydın

Oğuzhan Aydın

Merhaba Javascript teknolojileri ile uzun zamandır ilgiliyim. Öğrenmek kesintisiz bir alışkanlığım.

Press enter or click to view image in full size
Photo by Matt Foxx on Unsplash

Bu yazımızda path oldukça çok kullandığımız path modulünün kullanımında en çok kullanılan yapılardan kısaca bahsedeceğim.

node 10 + sürümü ile yerleşik olarak gelen path modulü için;

import path from 'node:path';

ile dahil ettiğimiz path modulünde dosya ve klasör yollarını oluşturmak, parçalamak ve düzenlemek için kullnabileceğimiz yapılardan bazıları;

→ path.sep: Dosya yolu parçaları arasındaki ayraçtır.
→ path.delimiter: PATH gibi ortam değişkenlerinde birden fazla yolu ayıran karakterdir.

import path from "node:path";

console.log(path.delimiter);
console.log(path.sep);

//mac ve linux için sırasıyla ":" , "/"
//win için ";" , "/"

→ path.basename() :Bir yolun son bölümünü, genellikle dosya adını döndürür.

import path from "node:path";

const filePath = "/app/src/index.js";

console.log(path.basename(filePath));
console.log(path.basename(filePath, ".js"));

/*
index.js
index
*/

İkinci argüman olan .js, sonuçtan kaldırılacak uzantıyı belirtir. Dosyanın kendisini silmez veya değiştirmez.

→ path.dirname() : Üst klasörü alır.

import path from "node:path";

console.log(path.dirname("/app/src/index.js"));

//app/src

Dosyanın bulunduğu dizini verir. Dosya sisteminde gerçekten bir klasörün var olup olmadığını kontrol etmez.

→path.extname(): Uzantıyı verir.

import path from "node:path";

console.log(path.extname("report.pdf"));
console.log(path.extname("archive.tar.gz"));
console.log(path.extname("README"));
console.log(path.extname(".env"));

// .pdf
//.gz
/*
Son iki satırın çıktısı boş stringdir.
Çünkü README içinde uzantı yoktur;
.env ise yalnızca noktayla başlayan bir dosya adıdır.
*/

→ path.parse(): Bir dosya yolunun bileşenlerini ayrı ayrı incelemeni sağlar.

import path from "node:path";

const result = path.parse("/app/src/index.js");

console.log(result);

//mac & linux çıktısı

/*
{
root: "/",
dir: "/app/src",
base: "index.js",
ext: ".js",
name: "index"
}
*/

→ path.format() : Parçalardan bir yol oluşturur.

import path from "node:path";

const filePath = path.format({
dir: "/app/src",
base: "index.js",
});

console.log(filePath);
///app/src/index.js

→ path.join() ve path.resolve() : Her ikiside parçaları birleştirir fakat resolve, parçaları işletim sistemine uygun ayraçlarla birleştirir ve . ile .. gibi bölümleri normalleştirir.

import path from "node:path";

const filePath = path.join("files", "documents", "report.pdf");

console.log(filePath);

//files/documents/report.pdf
console.log(path.join("/app", "src", "..", "files", "a.pdf"));

///app/files/a.pdf

resolve, mutlak yol oluşturur.

Get Oğuzhan Aydın’s stories in your inbox

Join Medium for free to get updates from this writer.

→ path.normalize() : Yolu düzenler.

import path from "node:path";

console.log(path.normalize("/app//src/./utils/../index.js"));

///app/src/index.js

İşlemler şu şekilde gerçekleşir:

  1. // tek ayraç haline gelir.
  2. . mevcut dizini ifade ettiği için kaldırılır.
  3. utils/.. birbirini götürür.
  4. Normalleştirilmiş yol döner.

→ path.relative(): İki yol arasındaki göreli yolu bulur.

import path from "node:path";

const result = path.relative(
"/app/config",
"/app/src"
);

console.log(result);
//../src

//Çünkü /app/config dizininden önce bir üst dizine (..) çıkılır,
// ardından src klasörüne girilir.

Bu metot dosyaları taşımaz; yalnızca iki yol arasındaki ilişkiyi hesaplar.

→path.isAbsolute() :Yol mutlak mı ?

import path from "node:path";

console.log(path.isAbsolute("/app/src/index.js"));
console.log(path.isAbsolute("src/index.js"));
console.log(path.isAbsolute("."));

/*
true
false
false
*/

Mutlak yol, çalışma dizinine bağlı olmayan ve kökten başlayan bir yoldur. Göreli yol ise nereden çalıştığına göre anlam kazanır.

Güvenlik notu: isAbsolute() tek başına bir dosya yolunun güvenli olduğunu kanıtlamaz.

__dirname, __filename ve ESModule

CommonJS’te __dirname hazır bulunur. ES Modules'te ise dosyanın konumunu belirlemek için import.meta.url ile fileURLToPath() ve path.dirname() kullanabilirsin.

Daha detaylı bilgi için bazı kaynaklar bırakıyorum, iyi çalışmalar:)

https://nodejs.org/api/path.html

--

--

Oğuzhan Aydın
Oğuzhan Aydın

Written by Oğuzhan Aydın

Merhaba Javascript teknolojileri ile uzun zamandır ilgiliyim. Öğrenmek kesintisiz bir alışkanlığım.