В этом руководстве вы узнаете о модуле path в Node.js. Node.js предоставляет модуль path, который позволяет легко взаимодействовать с путями к файлам. Модуль имеет много полезных свойств и методов для доступа и управления путями в файловой системе.
path — это основной модуль в Node. Поэтому вы можете использовать его без установки:
const path = require('path');Полезные свойства
Объект path имеет свойство sep, которое представляет разделитель пути для конкретной платформы:
path.sep
path.sep возвращает \ в Windows и / в Linux и macOS.
Объект path также имеет свойство delimiter, которое представляет разделитель пути:
path.delimiter
path.delimiter возвращает ; в Windows и : в Linux и macOS.
Удобные методы
Ниже показаны некоторые удобные методы модуля path, которые вы, вероятно, используете очень часто:
path.basename(path, [,ext]) path.dirname(path) path.extname(path) path.format(pathObj) path.isAbsolute(path) path.join(...path) path.normalize(path) path.parse(path) path.relative(from, to) path.resolve(...path)
path.basename(path[, ext])
path.basename() возвращает последнюю часть указанного пути. Например:
let result = path.basename('/public_html/home/index.html');
console.log(result);
Выход:
index.html
Параметр ext отфильтровывает расширение из пути:
let result = path.basename('/public_html/home/index.html','.html');
console.log(result);
Выход:
index
path.dirname(path)
Метод path.dirname() возвращает имя каталога по указанному пути. Например:
let result = path.dirname('/public_html/home/index.html');
console.log(result);
Выход:
/public_html/home
Обратите внимание, что path.dirname() игнорирует конечный каталог.
path.extname(path)
path.extname() возвращает расширение пути. Например:
console.log(path.extname('index.html'));
console.log(path.extname('app.js'));
console.log(path.extname('node.js.md'));
Выход:
.html .js .md
path.format(pathObj)
Метод path.format() возвращает строку пути из указанного объекта path.
let pathToFile = path.format({
dir: 'public_html/home/js',
base: 'app.js'
});
console.log(pathToFile);
Вывод(в Linux или macOS):
public_html/home/js/app.js
path.isAbsolute(path)
path.isAbsolute() возвращает true, если указанный путь является абсолютным путем.
Например, в Windows:
let result = path.isAbsolute('C:\\node.js\\');
console.log(result); // true
result = path.isAbsolute('C:/node.js/');
console.log(result); // true
result = path.isAbsolute('/node.js');
console.log(result); // true
result = path.isAbsolute('home/');
console.log(result); // false
result = path.isAbsolute('.');
console.log(result); // false
В Linux и macOS:
let result = path.isAbsolute('/node/js/');
console.log(result); // true
result = path.isAbsolute('/node/..');
console.log(result); // true
result = path.isAbsolute('node/');
console.log(result); // false
result = path.isAbsolute('.');
console.log(result); // false
path.join(…paths)
Метод path.join() делает две вещи:
- Присоединяет к последовательности сегментов пути, используя разделитель для конкретной платформы в качестве разделителя.
- Нормализует полученный путь и возвращает его.
Например:
let pathToDir = path.join('/home', 'js', 'dist', 'app.js');
console.log(pathToDir);
Вывод(в Windows):
\home\js\dist\app.js
path.parse(path)
Метод path.parse() возвращает объект, свойства которого представляют элементы пути. Возвращаемый объект имеет следующие свойства:
- root: корень
- dir: путь к каталогу от корня
- base: имя файла + расширение
- name: имя файла
- ext: расширение

Например, в Windows:
let pathObj = path.parse('d:/nodejs/html/js/app.js');
console.log(pathObj);Выход:
{
root: 'd:/',
dir: 'd:/nodejs/html/js/',
base: 'app.js',
ext: '.js',
name: 'app'
}В Linux или macOS:
let pathObj = path.parse('/nodejs/html/js/app.js');
console.log(pathObj);Выход:
{
root: '/',
dir: '/nodejs/html/js',
base: 'app.js',
ext: '.js',
name: 'app'
}path.normalize(path)
Метод path.normalize() нормализует указанный путь. Он также разрешает ‘..’ и ‘.’ сегменты.
Например, в Windows:
let pathToDir = path.normalize('C:\\node.js/module/js//dist');
console.log(pathToDir);
Выход:
C:\node.js\module\js\dist
path.relative(from, to)
path.relative() принимает два аргумента и возвращает относительный путь между ними на основе текущего рабочего каталога.
Например, в Linux или macOS:
let relativePath = path.relative('/home/user/config/','/home/user/js/')
console.log(relativePath);Выход:
../js
path.resolve(…paths)
Метод path.resolve() принимает последовательность путей или сегментов пути и преобразует ее в абсолютный путь. Метод path.resolve() добавляет каждый последующий путь справа налево, пока не завершит создание абсолютного пути.
Если вы не передадите аргумент в метод path.resolve(), он вернет текущий рабочий каталог.
Например, в Linux или macOS:
console.log("Current working directory:", __dirname);
console.log(path.resolve());
Выход:
/home/john /home/john
В этом примере метод path.resolve() возвращает путь, который совпадает с текущим рабочим каталогом.
Пример для Linux или macOS:
// Resolve 2 segments with the current directory
path1 = path.resolve("html", "index.html");
console.log(path1)
// Resolve 3 segments with the current directory
path2 = path.resolve("html", "js", "app.js");
console.log(path2)
// Treat of the first segment as root and ignore
// the current working directory
path3 = path.resolve("/home/html", "about.html");
console.log(path3);Выход:
/home/john/html/index.html /home/john/html/js/app.js /home/html/about.html
