Spec-Zone.ru › Node.js 12 LTS

Путь

Устойчивость: 2 - Стабильно

Исходный код: lib/path.js

Модуль path предоставляет утилиты для работы с путями к файлам и каталогам. К нему можно обратиться следующим образом:

const path = require('path');

Windows и POSIX

По умолчанию работа модуля path зависит от операционной системы, на которой запущена программа Node.js. В частности, при работе в Windows, модуль path предполагает использование путей в стиле Windows.

Поэтому использование path.basename() может давать разные результаты в POSIX и Windows:

В POSIX:

path.basename('C:\\temp\\myfile.html');
// Returns: 'C:\\temp\\myfile.html'

В Windows:

path.basename('C:\\temp\\myfile.html');
// Returns: 'myfile.html'

Чтобы получить согласованные результаты при работе с путями к файлам Windows на любой операционной системе, используйте path.win32:

В POSIX и Windows:

path.win32.basename('C:\\temp\\myfile.html');
// Returns: 'myfile.html'

Чтобы получить согласованные результаты при работе с путями к файлам POSIX на любой операционной системе, используйте path.posix:

В POSIX и Windows:

path.posix.basename('/tmp/myfile.html');
// Returns: 'myfile.html'

В Windows Node.js использует концепцию рабочей директории для каждого диска. Это поведение можно наблюдать при использовании пути к диску без обратного слэша. Например, path.resolve('C:\\') потенциально может вернуть другой результат, чем path.resolve('C:'). Для получения дополнительной информации см. эту страницу MSDN.

path.basename(path[, ext])

История
Версия Изменения
v6.0.0

Передача значения, отличного от строки, в качестве аргумента path теперь вызывает ошибку.

v0.1.25

Добавлен в: v0.1.25

  • path <строка>
  • ext <строка> Необязательное расширение файла
  • Возвращает: <строка>

Метод path.basename() возвращает последнюю часть path, аналогично команде Unix basename. Конечные разделители каталогов игнорируются, см. path.sep.

path.basename('/foo/bar/baz/asdf/quux.html');
// Returns: 'quux.html'

path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// Returns: 'quux'

Хотя Windows обычно обрабатывает имена файлов, включая расширения, без учета регистра, эта функция этого не делает. Например, C:\\foo.html и C:\\foo.HTML ссылаются на один и тот же файл, но basename обрабатывает расширение как строку, чувствительную к регистру:

path.win32.basename('C:\\foo.html', '.html');
// Returns: 'foo'

path.win32.basename('C:\\foo.HTML', '.html');
// Returns: 'foo.HTML'

Если path не является строкой или ext задано и не является строкой, выбрасывается TypeError.

path.delimiter

Добавлен в: v0.9.3
  • <строка>

Предоставляет разделитель пути, специфичный для платформы:

  • ; для Windows
  • : для POSIX

Например, в POSIX:

console.log(process.env.PATH);
// Prints: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'

process.env.PATH.split(path.delimiter);
// Returns: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']

В Windows:

console.log(process.env.PATH);
// Prints: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'

process.env.PATH.split(path.delimiter);
// Returns ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\']

path.dirname(path)

История
Версия Изменения
v6.0.0

Передача значения, отличного от строки, в качестве аргумента path теперь вызывает ошибку.

v0.1.16

Добавлен в: v0.1.16

  • path <строка>
  • Возвращает: <строка>

Метод path.dirname() возвращает имя каталога path, аналогично команде Unix dirname. Конечные разделители каталогов игнорируются, см. path.sep.

path.dirname('/foo/bar/baz/asdf/quux');
// Returns: '/foo/bar/baz/asdf'

Если path не является строкой, выбрасывается TypeError.

path.extname(path)

История
Версия Изменения
v6.0.0

Передача значения, отличного от строки, в качестве аргумента path теперь вызывает ошибку.

v0.1.25

Добавлен в: v0.1.25

  • path <строка>
  • Возвращает: <строка>

Метод path.extname() возвращает расширение path, от последнего вхождения символа . (точка) до конца строки в последней части path. Если в последней части path нет символа ., или если нет символов . кроме первого символа имени файла path (см. path.basename() ), возвращается пустая строка.

path.extname('index.html');
// Returns: '.html'

path.extname('index.coffee.md');
// Returns: '.md'

path.extname('index.');
// Returns: '.'

path.extname('index');
// Returns: ''

path.extname('.index');
// Returns: ''

path.extname('.index.md');
// Returns: '.md'

Если path не является строкой, выбрасывается TypeError.

path.format(pathObject)

Добавлен в: v0.11.15
  • pathObject <Объект>
    • dir <строка>
    • root <строка>
    • base <строка>
    • name <строка>
    • ext <строка>
  • Возвращает: <строка>

Метод path.format() возвращает строку пути из объекта. Это противоположно path.parse().

При предоставлении свойств для pathObject помните, что существуют комбинации, где одно свойство имеет приоритет над другим:

  • pathObject.root игнорируется, если указано pathObject.dir
  • pathObject.ext и pathObject.name игнорируются, если существует pathObject.base

Например, в POSIX:

// If `dir`, `root` and `base` are provided,
// `${dir}${path.sep}${base}`
// will be returned. `root` is ignored.
path.format({
  root: '/ignored',
  dir: '/home/user/dir',
  base: 'file.txt'
});
// Returns: '/home/user/dir/file.txt'

// `root` will be used if `dir` is not specified.
// If only `root` is provided or `dir` is equal to `root` then the
// platform separator will not be included. `ext` will be ignored.
path.format({
  root: '/',
  base: 'file.txt',
  ext: 'ignored'
});
// Returns: '/file.txt'

// `name` + `ext` will be used if `base` is not specified.
path.format({
  root: '/',
  name: 'file',
  ext: '.txt'
});
// Returns: '/file.txt'

В Windows:

path.format({
  dir: 'C:\\path\\dir',
  base: 'file.txt'
});
// Returns: 'C:\\path\\dir\\file.txt'

path.isAbsolute(path)

Добавлен в: v0.11.2
  • path <строка>
  • Возвращает: <логическое>

Метод path.isAbsolute() определяет, является ли path абсолютным путем.

Если заданная path — это строка длиной ноль, возвращается false.

Например, в POSIX:

path.isAbsolute('/foo/bar'); // true
path.isAbsolute('/baz/..');  // true
path.isAbsolute('qux/');     // false
path.isAbsolute('.');        // false

В Windows:

path.isAbsolute('//server');    // true
path.isAbsolute('\\\\server');  // true
path.isAbsolute('C:/foo/..');   // true
path.isAbsolute('C:\\foo\\..'); // true
path.isAbsolute('bar\\baz');    // false
path.isAbsolute('bar/baz');     // false
path.isAbsolute('.');           // false

Если path не является строкой, выбрасывается TypeError.

path.join([...paths])

Добавлен в: v0.1.16
  • ...paths <строка> Последовательность сегментов пути
  • Возвращает: <строка>

Метод path.join() объединяет все заданные path сегменты вместе, используя разделитель, специфичный для платформы, затем нормализует полученный путь.

Сегменты пути длиной ноль игнорируются. Если объединенная строка пути имеет длину ноль, возвращается '.', представляющая текущую рабочую директорию.

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/baz/asdf'

path.join('foo', {}, 'bar');
// Throws 'TypeError: Path must be a string. Received {}'

Если какой-либо из сегментов пути не является строкой, выбрасывается TypeError.

path.normalize(path)

Добавлен в: v0.1.23
  • path <строка>
  • Возвращает: <строка>

Метод path.normalize() нормализует заданный path, разрешая сегменты '..' и '.'.

Когда встречаются несколько последовательных символов разделения сегментов пути (например, / в POSIX и либо \ или / в Windows), они заменяются на один экземпляр разделителя сегментов пути, специфичного для платформы (/ в POSIX и \ в Windows). Конечные разделители сохраняются.

Если path — это строка длиной ноль, возвращается '.', представляющая текущую рабочую директорию.

Например, в POSIX:

path.normalize('/foo/bar//baz/asdf/quux/..');
// Returns: '/foo/bar/baz/asdf'

В Windows:

path.normalize('C:\\temp\\\\foo\\bar\\..\\');
// Returns: 'C:\\temp\\foo\\'

Поскольку Windows распознает несколько разделителей путей, оба разделителя будут заменены экземплярами предпочтительного разделителя Windows (\):

path.win32.normalize('C:////temp\\\\/\\/\\/foo/bar');
// Returns: 'C:\\temp\\foo\\bar'

Если path не является строкой, выбрасывается TypeError.

path.parse(path)

Добавлен в: v0.11.15
  • path <строка>
  • Возвращает: <Объект>

Метод path.parse() возвращает объект, свойства которого представляют значимые элементы path. Конечные разделители каталогов игнорируются, см. path.sep.

Возвращаемый объект будет иметь следующие свойства:

  • dir <строка>
  • root <строка>
  • base <строка>
  • name <строка>
  • ext <строка>

Например, на POSIX:

path.parse('/home/user/dir/file.txt');
// Returns:
// { root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }
┌─────────────────────┬────────────┐
│          dir        │    base    │
├──────┬              ├──────┬─────┤
│ root │              │ name │ ext │
"  /    home/user/dir / file  .txt "
└──────┴──────────────┴──────┴─────┘
(All spaces in the "" line should be ignored. They are purely for formatting.)

На Windows:

path.parse('C:\\path\\dir\\file.txt');
// Returns:
// { root: 'C:\\',
//   dir: 'C:\\path\\dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }
┌─────────────────────┬────────────┐
│          dir        │    base    │
├──────┬              ├──────┬─────┤
│ root │              │ name │ ext │
" C:\      path\dir   \ file  .txt "
└──────┴──────────────┴──────┴─────┘
(All spaces in the "" line should be ignored. They are purely for formatting.)

Исключение TypeError выбрасывается, если path не является строкой.

path.posix

Добавлен в: v0.11.15
  • <Объект>

Свойство path.posix предоставляет доступ к POSIX-специфическим реализациям методов path.

path.relative(from, to)

История
Версия Изменения
v6.8.0

На Windows ведущие косые черты для UNC-путей теперь включены в возвращаемое значение.

v0.5.0

Добавлен в: v0.5.0

  • from <строка>
  • to <строка>
  • Возвращает: <строка>

Метод path.relative() возвращает относительный путь от from к to на основе текущей рабочей директории. Если from и to разрешаются в один и тот же путь (после вызова path.resolve() для каждого), возвращается строка нулевой длины.

Если строка нулевой длины передана в качестве from или to, вместо неё будет использоваться текущая рабочая директория.

Например, на POSIX:

path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// Returns: '../../impl/bbb'

На Windows:

path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');
// Returns: '..\\..\\impl\\bbb'

Исключение TypeError выбрасывается, если from или to не являются строками.

path.resolve([...paths])

Добавлен в: v0.3.4
  • ...paths <строка> Последовательность путей или сегментов путей
  • Возвращает: <строка>

Метод path.resolve() разрешает последовательность путей или сегментов путей в абсолютный путь.

Указанная последовательность путей обрабатывается справа налево, и каждый последующий path добавляется в начало, пока не будет построен абсолютный путь. Например, для последовательности сегментов путей: /foo, /bar, baz, вызов path.resolve('/foo', '/bar', 'baz') вернёт /bar/baz, потому что 'baz' не является абсолютным путём, а '/bar' + '/' + 'baz' — является.

Если после обработки всех заданных path сегментов абсолютный путь ещё не сгенерирован, используется текущая рабочая директория.

Полученный путь нормализован, и конечные слэши удаляются, за исключением случая, когда путь разрешен до корневого каталога.

Сегменты путей нулевой длины игнорируются.

Если не передано ни одного path сегмента, path.resolve() вернёт абсолютный путь текущей рабочей директории.

path.resolve('/foo/bar', './baz');
// Returns: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// Returns: '/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// If the current working directory is /home/myself/node,
// this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'

Исключение TypeError выбрасывается, если какой-либо из аргументов не является строкой.

path.sep

Добавлен в: v0.7.9
  • <строка>

Предоставляет разделитель сегмента пути, специфичный для платформы:

  • \ на Windows
  • / на POSIX

Например, на POSIX:

'foo/bar/baz'.split(path.sep);
// Returns: ['foo', 'bar', 'baz']

На Windows:

'foo\\bar\\baz'.split(path.sep);
// Returns: ['foo', 'bar', 'baz']

На Windows, как обратный слэш (/), так и прямой слэш (\) принимаются в качестве разделителей сегментов пути; однако, методы path добавляют только обратные слэши (\).

path.toNamespacedPath(path)

Добавлен в: v9.0.0
  • path <строка>
  • Возвращает: <строка>

Только на системах Windows, возвращает эквивалентный префикс-путь с пространством имен для данного path. Если path не является строкой, path возвращается без изменений.

Этот метод имеет смысл только на системах Windows. На системах POSIX метод не работает и всегда возвращает path без изменений.

path.win32

Добавлен в: v0.11.15
  • <Объект>

Свойство path.win32 предоставляет доступ к Windows-специфическим реализациям методов path.

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v12.x/docs/api/path.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API