Path¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:path
предоставляет утилиты для работы с путями к файлам и каталогам. Доступ к нему можно получить с помощью:
1 |
|
Windows против POSIX¶
Работа модуля node:path
по умолчанию зависит от операционной системы, на которой запущено приложение Node.js. В частности, при работе в операционной системе Windows модуль node:path
будет считать, что используются пути в стиле Windows.
Поэтому использование path.basename()
может дать разные результаты на POSIX и Windows:
На POSIX:
1 2 |
|
В Windows:
1 2 |
|
Для достижения последовательных результатов при работе с путями к файлам Windows в любой операционной системе используйте path.win32
:
В POSIX и Windows:
1 2 |
|
Для достижения согласованных результатов при работе с путями к файлам POSIX в любой операционной системе используйте path.posix
:
В POSIX и Windows:
1 2 |
|
В Windows Node.js следует концепции рабочего каталога на каждом диске. Такое поведение можно наблюдать при использовании пути к диску без обратной косой черты. Например, path.resolve('C:\')
потенциально может вернуть другой результат, чем path.resolve('C:')
. Для получения дополнительной информации смотрите эту страницу MSDN.
path.basename(path[, suffix])
¶
Метод path.basename()
возвращает последнюю часть path
, аналогично команде Unix basename
. Заглавные разделители каталогов игнорируются.
1 2 3 4 5 |
|
Хотя Windows обычно обрабатывает имена файлов, включая расширения файлов, без учета регистра, эта функция этого не делает. Например, C:\foo.html
и C:\foo.HTML
ссылаются на один и тот же файл, но basename
рассматривает расширение как строку, чувствительную к регистру:
1 2 3 4 5 |
|
Ошибка TypeError
возникает, если path
не является строкой или если указан `suffix, который не является строкой.
path.delimiter
¶
Предоставляет специфический для платформы разделитель путей:
;
для Windows:
для POSIX
Например, на POSIX:
1 2 3 4 5 |
|
В Windows:
1 2 3 4 5 |
|
path.dirname(path)
¶
Метод path.dirname()
возвращает имя каталога пути
, аналогично команде Unix dirname
. Заглавные разделители каталогов игнорируются, см. path.sep
.
1 2 |
|
Ошибка TypeError
возникает, если path
не является строкой.
path.extname(path)
¶
Метод path.extname()
возвращает расширение пути
, начиная с последнего появления символа .
(точка) до конца строки в последней части пути
. Если в последней части path
нет символа .
, или если нет символов .
, кроме первого символа основного имени path
(см. path.basename()
), возвращается пустая строка.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Ошибка TypeError
возникает, если path
не является строкой.
path.format(pathObject)
¶
Метод path.format()
возвращает строку пути из объекта. Это противоположность path.parse()
.
При задании свойств для pathObject
помните, что существуют комбинации, в которых одно свойство имеет приоритет над другим:
pathObject.root
игнорируется, если указаноpathObject.dir
.pathObject.ext
иpathObject.name
игнорируются, если существуетpathObject.base
.
Например, на POSIX:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
В Windows:
1 2 3 4 5 |
|
path.isAbsolute(path)
¶
Метод path.isAbsolute()
определяет, является ли path
абсолютным путем.
Если заданный path
является строкой нулевой длины, будет возвращена false
.
Например, на POSIX:
1 2 3 4 |
|
В Windows:
1 2 3 4 5 6 7 |
|
Ошибка TypeError
возникает, если path
не является строкой.
path.join([...paths])
¶
Метод path.join()
объединяет все заданные сегменты пути
вместе, используя в качестве разделителя специфический для платформы разделитель, а затем нормализует полученный путь.
Сегменты пути
нулевой длины игнорируются. Если объединенная строка пути является строкой нулевой длины, то будет возвращена .'
, представляющая текущий рабочий каталог.
1 2 3 4 5 |
|
Ошибка TypeError
возникает, если любой из сегментов пути не является строкой.
path.normalize(path)
¶
Метод path.normalize()
нормализует заданный путь
, разрешая сегменты ...
и ...
.
Если найдено несколько последовательных символов разделения сегментов пути (например, /
на POSIX и \
или /
на Windows), они заменяются одним экземпляром специфического для платформы разделителя сегментов пути (/
на POSIX и \
на Windows). Последующие разделители сохраняются.
Если path
является строкой нулевой длины, возвращается '.'
, представляющий текущий рабочий каталог.
Например, на POSIX:
1 2 |
|
В Windows:
1 2 |
|
Поскольку Windows распознает несколько разделителей путей, оба разделителя будут заменены экземплярами предпочитаемого Windows разделителя (\
):
1 2 |
|
Ошибка TypeError
возникает, если path
не является строкой.
path.parse(path)
¶
Метод path.parse()
возвращает объект, свойства которого представляют значимые элементы пути
. Заглавные разделители каталогов игнорируются, см. path.sep
.
Возвращаемый объект будет иметь следующие свойства:
Например, на POSIX:
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 |
|
В Windows:
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 |
|
Ошибка TypeError
возникает, если path
не является строкой.
path.posix
¶
Свойство path.posix
предоставляет доступ к POSIX-специфическим реализациям методов path
.
API доступен через require('node:path').posix
или require('node:path/posix')
.
path.relative(from, to)
¶
Метод path.relative()
возвращает относительный путь от from
к to
на основе текущего рабочего каталога. Если from
и to
разрешаются в один и тот же путь (после вызова path.resolve()
для каждого), возвращается строка нулевой длины.
Если в качестве from
или to
передана строка нулевой длины, то вместо строк нулевой длины будет использоваться текущий рабочий каталог.
Например, на POSIX:
1 2 3 4 5 |
|
В Windows:
1 2 |
|
Ошибка TypeError
возникает, если from
или to
не является строкой.
path.resolve([...paths])
¶
Метод path.resolve()
преобразует последовательность путей или сегментов путей в абсолютный путь.
Заданная последовательность путей обрабатывается справа налево, с добавлением каждого последующего path
, пока не будет построен абсолютный путь. Например, если задана последовательность сегментов пути: /foo
, /bar
, baz
, вызов path.resolve('/foo', '/bar', 'baz')
вернет /bar/baz
, потому что 'baz'
не является абсолютным путем, а '/bar' + '/' + 'baz'
является.
Если после обработки всех заданных сегментов path
абсолютный путь еще не сгенерирован, то используется текущий рабочий каталог.
Результирующий путь нормализуется и удаляются косые черты, если только путь не разрешается в корневой каталог.
Сегменты пути
нулевой длины игнорируются.
Если сегменты path
не переданы, path.resolve()
вернет абсолютный путь к текущему рабочему каталогу.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Ошибка TypeError
возникает, если любой из аргументов не является строкой.
path.sep
¶
Предоставляет специфический для платформы разделитель сегментов пути:
\
в Windows/
на POSIX
Например, на POSIX:
1 2 |
|
В Windows:
1 2 |
|
В Windows в качестве разделителя сегментов пути принимается как прямая косая черта (/
), так и обратная косая черта (\
); однако методы path
добавляют только обратную косую черту (\
).
path.toNamespacedPath(path)
¶
Только в системах Windows, возвращает эквивалентный namespace-prefixed path для заданного path
. Если path
не является строкой, path
будет возвращен без изменений.
Этот метод имеет смысл только в системах Windows. В POSIX-системах метод не работает и всегда возвращает path
без изменений.
path.win32
¶
Свойство path.win32
предоставляет доступ к Windows-специфическим реализациям методов path
.
API доступен через require('node:path').win32
или require('node:path/win32')
.