Ce face path.basename / dirname / extname
path.basename întoarce ultima parte a căii, de obicei numele fișierului. Dacă dai și un sufix (de exemplu ".pdf"), îl elimină de la final, așa că obții numele fără extensie.
path.dirname întoarce tot ce este înainte de ultima parte, adică directorul. path.extname întoarce extensia, de la ultimul punct, cu tot cu punct (".jpg"), sau un șir gol dacă numele nu are extensie.
Funcțiile lucrează doar cu textul căii, nu verifică discul. Pe Windows folosesc implicit și \ ca separator; exemplele au rulat pe Linux/macOS.
Parametri
| Parametru | Descriere |
|---|---|
cale |
Calea analizată. |
sufix |
Opțional, la basename: textul eliminat de la sfârșitul numelui, dacă se potrivește exact (literele mari contează). |
Ce returnează
Un șir: numele, directorul sau extensia.
Exemple
Exemplul 1: Cele trei funcții pe aceeași cale
import path from "node:path";
const cale = "/home/ana/documente/factura-octombrie.pdf";
console.log(path.basename(cale));
console.log(path.basename(cale, ".pdf"));
console.log(path.dirname(cale));
console.log(path.extname(cale));
Rezultat
factura-octombrie.pdf
factura-octombrie
/home/ana/documente
.pdf
Exemplul 2: Cazuri speciale pentru extname
import path from "node:path";
for (const nume of ["arhiva.tar.gz", "README", ".env", "poza.", "Raport.PDF"]) {
console.log(nume.padEnd(14), JSON.stringify(path.extname(nume)));
}
Rezultat
arhiva.tar.gz ".gz"
README ""
.env ""
poza. "."
Raport.PDF ".PDF"
Exemplul 3: Fișiere grupate după extensie
import path from "node:path";
const fisiere = ["poze/iasi.jpg", "cv-ana.pdf", "poze/cluj.JPG", "note.txt", "contract.pdf"];
const grupe = {};
for (const fisier of fisiere) {
const ext = path.extname(fisier).toLowerCase() || "(fără)";
(grupe[ext] ??= []).push(path.basename(fisier));
}
console.log(grupe);
Rezultat
{
'.jpg': [ 'iasi.jpg', 'cluj.JPG' ],
'.pdf': [ 'cv-ana.pdf', 'contract.pdf' ],
'.txt': [ 'note.txt' ]
}
Greșeli frecvente
- Compari extensii fără să ții cont de litere mari:
.JPG≠.jpg. Folosește.toLowerCase(). - Aștepți
".tar.gz"de laextname("arhiva.tar.gz"): primești doar".gz", extensia de după ultimul punct. - Folosești
split("/").pop()în loc debasename: nu merge pe căile Windows și nici când calea se termină cu/.
Comenzi înrudite
path.parse / path.format / path.sep: Desface o cale în bucăți (root, dir, base, name, ext) și o reface din bucăți; path.sep și path.delimiter dau separatorii sistemului.path.join: Lipește mai multe bucăți într-o singură cale, cu separatorul corect pentru sistemul de operare, și curăță ./ și ../.url.fileURLToPath / pathToFileURL: Transformă un URL file:// (cum este import.meta.url) în cale obișnuită și o cale în URL file://.fs.glob: Găsește fișierele care se potrivesc cu un tipar, de exemplu „**/*.js” sau „poze/*.{jpg,png}”.