Вбудований модуль 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.pngpath.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')); // falsepath.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.pngpath.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.pngpath.normalize() не перевіряє існування шляху – вона лише виправляє його структуру, роблячи синтаксично коректним.
path.sep
Властивість path.sep зберігає роздільник, який використовується у шляхах для поточної операційної системи:
import path from 'path';
console.log(path.sep);
// На Windows: '\'
// На Linux/macOS: '/'Підсумок
Використання модуля path – це гарна практика при роботі з файловою системою в Node.js. Він усуває проблеми сумісності між різними операційними системами, автоматично підбираючи правильні роздільники й допомагаючи безпечно працювати зі шляхами до файлів та директорій.
Функції path роблять код більш чистим і надійним, а також позбавляють потреби вручну маніпулювати рядками шляхів.
Офіційна документація модуля: Node.js – path module