В этом руководстве вы узнаете о модуле 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