path.parse / path.format / path.sep în Node.js

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.

Sintaxă
import path from "node:path";
const { root, dir, base, name, ext } = path.parse(cale);
path.format({ dir, name, ext })
path.sep, path.delimiter

Ce face path.parse / path.format / path.sep

path.parse întoarce un obiect cu toate părțile unei căi: root (rădăcina, / sau C:\), dir (directorul), base (numele complet), name (numele fără extensie) și ext (extensia).

path.format face operația inversă. Dacă dai base, acesta are prioritate față de name + ext; dacă dai dir, root este ignorat. Așa poți schimba ușor extensia sau numele unui fișier.

path.sep este separatorul de directoare (/ pe Linux și macOS, \ pe Windows), iar path.delimiter este separatorul din variabila PATH (: pe Linux și macOS, ; pe Windows). path.posix și path.win32 oferă aceleași funcții pentru un sistem anume.

Parametri

Parametru Descriere
cale Pentru parse: calea de desfăcut.
obiect Pentru format: un obiect cu root, dir, base, name, ext (toate opționale).

Ce returnează

parse: un obiect cu cinci proprietăți. format: calea, ca șir.

Exemple

Exemplul 1: Bucățile unei căi

import path from "node:path";

console.log(path.posix.parse("/home/ana/poze/iasi-2026.jpg"));
console.log(path.win32.parse("C:\\Users\\Ana\\cv.docx"));

Rezultat

{
  root: '/',
  dir: '/home/ana/poze',
  base: 'iasi-2026.jpg',
  ext: '.jpg',
  name: 'iasi-2026'
}
{
  root: 'C:\\',
  dir: 'C:\\Users\\Ana',
  base: 'cv.docx',
  ext: '.docx',
  name: 'cv'
}

Exemplul 2: Schimbarea extensiei cu parse + format

import path from "node:path";

function schimbaExtensia(cale, extNoua) {
  const { dir, name } = path.parse(cale);
  return path.format({ dir, name, ext: extNoua });
}

console.log(schimbaExtensia("rapoarte/vanzari.csv", ".xlsx"));
console.log(schimbaExtensia("poze/iasi.png", "webp"));
console.log(path.format({ root: "/", base: "index.html" }));

Rezultat

rapoarte/vanzari.xlsx
poze/iasi.webp
/index.html

Exemplul 3: Separatorii sistemului

import path from "node:path";

console.log("Linux/macOS:", path.posix.sep, path.posix.delimiter);
console.log("Windows:", path.win32.sep, path.win32.delimiter);

const PATH = "/usr/local/bin:/usr/bin:/home/ana/.local/bin";
console.log(PATH.split(path.posix.delimiter));

Rezultat

Linux/macOS: / :
Windows: \ ;
[ '/usr/local/bin', '/usr/bin', '/home/ana/.local/bin' ]

Greșeli frecvente

  • Dai lui format și base, și name + ext: base câștigă, iar schimbarea extensiei nu are efect. Când schimbi extensia, nu trimite base (nu folosi direct { ...path.parse(cale), ext }).
  • Scrii "/" sau ":" direct în cod când împarți căi ori variabila PATH; folosește path.sep și path.delimiter.

Comenzi înrudite

  • path.basename / dirname / extname: Extrage dintr-o cale numele fișierului (basename), directorul (dirname) sau extensia (extname).
  • path.join: Lipește mai multe bucăți într-o singură cale, cu separatorul corect pentru sistemul de operare, și curăță ./ și ../.
  • path.resolve / path.relative: Transformă o cale în cale absolută (resolve), calculează drumul dintre două căi (relative) și verifică sau curăță căi.
  • process.env: Obiectul cu variabilele de mediu ale procesului: configurări ca PORT, NODE_ENV sau chei de API, mereu ca șiruri.