Вбудований модуль path у Node.js – це інструмент для роботи зі шляхами до файлів і директорій. Його головна перевага – кросплатформність: код, який використовує path, однаково коректно працює як на Windows (де роздільником є \), так і на Linux/macOS (де використовується /).

Це означає, що ви можете писати універсальний код без необхідності вручну враховувати особливості кожної операційної системи.

Для початку роботи з модулем його потрібно імпортувати:

// CommonJS
const path = require('path');

// ES Modules
import path from 'path';

Основні функції та їх застосування

path.basename()

Повертає останню частину шляху – тобто ім’я файлу:

import path from 'path';

const filePath = 'C:\\temp\\report.txt';

console.log(path.basename(filePath)); // 'report.txt'

Другий, необов’язковий аргумент дозволяє відсікати розширення файлу:

console.log(path.basename(filePath, '.txt')); // 'report'

Ця функція не перевіряє, чи існує файл фізично – вона просто працює з рядком, який містить шлях.

path.dirname()

Повертає шлях до каталогу, у якому розташований файл:

import path from 'path';

const filePath = 'C:\\temp\\report.txt';

console.log(path.dirname(filePath));
// C:\temp

Працює лише з рядком шляху – не перевіряє, чи існує цей каталог у файловій системі.

path.extname()

Повертає розширення файлу, включно з крапкою:

import path from 'path';

console.log(path.extname('index.html')); // '.html'
console.log(path.extname('photo.jpeg')); // '.jpeg'

Якщо файл не має розширення, функція поверне порожній рядок.

path.join()

Об’єднує кілька сегментів шляху в один, автоматично використовуючи роздільник, специфічний для поточної операційної системи:

import path from 'path';

const result = path.join('test-data', 'photo', 'image.png');

console.log(result);
// 'test-data\photo\image.png'  (на Windows)
// 'test-data/photo/image.png'  (на Linux/macOS)

Цю функцію зручно використовувати замість ручного складання шляхів через + або /, щоб уникнути помилок з роздільниками.

path.join() автоматично прибирає зайві роздільники (наприклад, подвійні //) і нормалізує шлях.

path.resolve()

Приймає одну або кілька частин шляху й повертає абсолютний шлях, побудований відносно поточного робочого каталогу (process.cwd()):

import path from 'path';

const fullPath = path.resolve('test-data', 'photo', 'image.png');

console.log(fullPath);
// C:\javascript_examples\test-data\photo\image.png

path.parse() та path.format()

path.parse() – приймає шлях і повертає об’єкт із такими властивостями:

  • root – корінь шляху (наприклад, C:\\ у Windows)
  • dir – шлях до директорії
  • base – ім’я файлу з розширенням
  • ext – розширення файлу
  • name – ім’я файлу без розширення
import path from 'path';

const parsed = path.parse('C:\\temp\\report.txt');

console.log(parsed);

/*
{
  root: 'C:\\',
  dir: 'C:\\temp',
  base: 'report.txt',
  ext: '.txt',
  name: 'report'
}
*/

path.format() – виконує зворотну операцію – вона приймає об’єкт із тими самими властивостями, що повертає path.parse(), і збирає з нього повний шлях у вигляді рядка:

const formatted = path.format(parsed);

console.log(formatted); 
// C:\temp\report.txt

Ці функції корисні, коли потрібно змінити лише частину шляху (наприклад, розширення файлу або каталог), а потім знову отримати повний шлях.

path.isAbsolute()

Перевіряє, чи є шлях абсолютним:

import path from 'path';

console.log(path.isAbsolute('C:\\temp\\report.txt')); // true
console.log(path.isAbsolute('temp\\report.txt')); // false

path.relative()

Повертає відносний шлях від однієї директорії до іншої. Іншими словами, path.relative(from, to) показує, як дістатися з каталогу from до каталогу або файлу to:

import path from 'path';

const from = 'C:\\temp\\demo';
const to = 'C:\\temp\\demo\\photo\\image.png';
const relativePath = path.relative(from, to);

console.log(relativePath);
// photo\image.png

path.normalize()

Приводить шлях до стандартного, нормалізованого вигляду. Вона автоматично прибирає зайві роздільники (\\), а також обробляє спеціальні сегменти . (поточна директорія) і .. (попередня директорія):

import path from 'path';

const filePath = 'C:\\temp\\demo\\..\\photo\\\\image.png';
const normalized = path.normalize(filePath);

console.log(normalized);
// C:\temp\photo\image.png

path.normalize() не перевіряє існування шляху – вона лише виправляє його структуру, роблячи синтаксично коректним.

path.sep

Властивість path.sep зберігає роздільник, який використовується у шляхах для поточної операційної системи:

import path from 'path';

console.log(path.sep);
// На Windows: '\'
// На Linux/macOS: '/'

Підсумок

Використання модуля path – це гарна практика при роботі з файловою системою в Node.js. Він усуває проблеми сумісності між різними операційними системами, автоматично підбираючи правильні роздільники й допомагаючи безпечно працювати зі шляхами до файлів та директорій.

Функції path роблять код більш чистим і надійним, а також позбавляють потреби вручну маніпулювати рядками шляхів.

Офіційна документація модуля: Node.js – path module


Мітки: