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') // somethingrequire('path').basename('/test/something.txt') // something.txtrequire('path').basename('/test/something.txt', '.txt') // something
path.dirname()
Retorna a parte do diretório de um caminho:
require('path').dirname('/test/something') // /testrequire('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') // truerequire('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 raizdir
: o caminho da pasta a partir da raizbase
: o nome do arquivo + extensãoname
: o nome do arquivoext
: 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'