Spec-Zone.ru › Node.js 18 LTS

Путь

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

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

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

const path = require('node:path'); copy

Windows или POSIX

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

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

В POSIX:

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

В Windows:

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

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

В POSIX и Windows:

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

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

В POSIX и Windows:

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

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

path.basename(path[, suffix])

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

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

v0.1.25

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

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

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

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

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

Хотя 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' copy

Ошибка TypeError возникает, если path не является строкой или если suffix задано и не является строкой.

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'] copy

В 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\\'] copy

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' copy

Ошибка TypeError возникает, если path не является строкой.

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' copy

Ошибка TypeError возникает, если path не является строкой.

path.format(pathObject)

Добавлена в: v0.11.15
  • pathObject <Объект> Любой JavaScript-объект, имеющий следующие свойства:
    • 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' copy

В Windows:

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

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 copy

В 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 copy

Ошибка TypeError возникает, если path не является строкой.

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 {}' copy

Ошибка TypeError возникает, если любой из сегментов пути не является строкой.

path.normalize(path)

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

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

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

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

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

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

В Windows:

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

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

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

Если path не является строкой, будет брошено исключение TypeError.

path.parse(path)

Добавлена в: v0.11.15
  • path <string>
  • Возвращает: <Object>

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

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

  • dir <string>
  • root <string>
  • base <string>
  • name <string>
  • ext <string>

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

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

В Windows:

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

Если path не является строкой, будет брошено исключение TypeError.

path.posix

История
Версия Изменения
v15.3.0

Отображается как require('path/posix').

v0.11.15

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

  • <Object>

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

API доступен через require('node:path').posix или require('node:path/posix').

path.relative(from, to)

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

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

v0.5.0

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

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

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

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

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

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

В Windows:

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

Если либо from или to не является строкой, будет брошено исключение TypeError.

path.resolve([...paths])

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

Метод 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' copy

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

path.sep

Добавлена в: v0.7.9
  • <string>

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

  • \ в Windows
  • / в POSIX

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

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

В Windows:

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

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

path.toNamespacedPath(path)

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

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

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

path.win32

История
Версия Изменения
v15.3.0

Отображается как require('path/win32').

v0.11.15

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

  • <Object>

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

API доступен через require('node:path').win32 или require('node:path/win32').

© 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-v18.x/docs/api/path.html

Spec-Zone.ru

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