O módulo de path do Node.js

O módulo path disponibiliza diversas funcionalidades úteis para acessar e interagir com o file system.

Não há necessidade de intalá-lo. Sendo parte do núcleo do Node.js, basta importar para poder usá-lo:

const path = require('path')

Esse módulo possui o path.sep que provê o caracter separador de segmento de caminho (\ no Windows, e / no Linux / macOS), e o path.delimiter que provê o caracter delimitador de caminho (; no Windows, e : no Linux / macOS).

Esses são os métodos do path:

path.basename()

Retorna a última parte de um caminho. Um segundo parâmetro pode filtrar a extensão do arquivo:

require('path').basename('/test/something') // something
require('path').basename('/test/something.txt') // something.txt
require('path').basename('/test/something.txt', '.txt') // something

path.dirname()

Retorna a parte do diretório de um caminho:

require('path').dirname('/test/something') // /test
require('path').dirname('/test/something/file.txt') // /test/something

path.extname()

Retorna a parte da extensão de um caminho

require('path').extname('/test/something') // ''
require('path').extname('/test/something/file.txt') // '.txt'

path.isAbsolute()

Retorna true se o caminho for absoluto

require('path').isAbsolute('/test/something') // true
require('path').isAbsolute('./test/something') // false

path.join()

Junta duas ou mais partes de um caminho:

const name = 'pauloluan'
require('path').join('/', 'users', name, 'notes.txt') // '/users/pauloluan/notes.txt'

path.normalize()

Tenta calcular o caminho correto quando ele contêm especificadores relativos como . ou .., ou barras duplas:

require('path').normalize('/users/pauloluan/..//test.txt') // '/users/test.txt'

path.parse()

Cria um objeto contendo os segmentos que compões o caminho fornecido:

  • root: a raiz
  • dir: o caminho da pasta a partir da raiz
  • base: o nome do arquivo + extensão
  • name: o nome do arquivo
  • ext: a extensão do arquivo

Exemplo:

require('path').parse('/users/test.txt')

resulta em

{
root: '/',
dir: '/users',
base: 'test.txt',
ext: '.txt',
name: 'test'
}

path.relative()

Aceita 2 caminhos como argumentos. Retorna o caminho relativo do primeiro para o segundo, baseando-se no diretório atual.

Exemplo:

require('path').relative('/Users/pauloluan', '/Users/pauloluan/test.txt') // 'test.txt'
require('path').relative('/Users/pauloluan', '/Users/pauloluan/something/test.txt') // 'something/test.txt'

path.resolve()

Você pode obter o cálculo do caminho absoluto de um caminho relativo usando path.resolve():

path.resolve('pauloluan.txt') // '/Users/pauloluan/pauloluan.txt' se rodar da minha home

Ao especificar um segundo parâmetro, o resolve vai usar o primeiro como base para o segundo:

path.resolve('tmp', 'pauloluan.txt') // '/Users/pauloluan/tmp/pauloluan.txt' se rodar da minha home

Se o primeiro parâmetro começar com uma barra, isso significa que é um caminho absoluto:

path.resolve('/etc', 'pauloluan.txt') // '/etc/pauloluan.txt'