Módulo path

O módulo path do Node.js é essencial para a manipulação de caminhos de ficheiros e diretórios de forma segura, eficiente e multiplataforma, facilitando o desenvolvimento de aplicações que funcionam corretamente tanto em sistemas Unix quanto em Windows.

Métodos do módulo path

MétodoDescrição
path.normalize(p)É usado para normalizar um path, cuidando de ‘..’ e ‘.’
path.join([path1][, path2][, …])É usado para unir todos os argumentos e normalizar o path resultante.
path.resolve([from …], to)É usado para resolver um caminho absoluto.
path.isabsolute(path)Determina se o caminho é um caminho absoluto. Um caminho absoluto sempre será resolvido no mesmo local, independentemente do diretório de trabalho.
path.relative(from, to)É usado para resolver o caminho relativo de “de” para “para”.
path.dirname(p)Ele retorna o nome do diretório de um caminho.
path.basename(p[, ext])Retorna a última parte de um caminho.
path.extname(p)Retorna a extensão do caminho, do último ‘.’ até o final da string na última parte do caminho. Se não há ‘.’ na última parte do caminho ou o primeiro caractere for ‘.’, ele retornará uma string vazia.
path.parse(pathstring)Retorna um objeto de um caminho.
path.format(pathobject)Retorna um caminho de um objeto, o oposto de path.parse acima.

Introdução e Importação

O módulo path faz parte do núcleo do Node.js e não requer instalação. Para utilizá-lo, basta importar no seu código:

const path = require('path'); // CommonJS

Principais Métodos do path

Abaixo estão os métodos mais usuais, com exemplos práticos.

path.join()

Une segmentos de caminho, usando automaticamente o separador correto do sistema operacional.

const caminho = path.join('pasta', 'subpasta', 'arquivo.txt');
console.log(caminho); // pasta/subpasta/ficheiro.txt (Unix) ou pasta\subpasta\ficheiro.txt (Windows)

path.resolve()

Resolve para um caminho absoluto, a partir dos argumentos.

const absoluto = path.resolve('pasta', 'subpasta', 'ficheiro.txt');
console.log(absoluto); // /caminho/completo/para/pasta/subpasta/ficheiro.txt

path.basename()

Retorna a última parte do caminho (nome do ficheiro), opcionalmente removendo uma extensão.

const ficheiro = path.basename('/users/joao/docs/relatorio.pdf');
console.log(ficheiro); // relatorio.pdf

const semExt = path.basename('/users/joao/docs/relatorio.pdf', '.pdf');
console.log(semExt); // relatorio

path.dirname()

Retorna o diretório que contém o ficheiro.

const dir = path.dirname('/users/joao/docs/relatorio.pdf');
console.log(dir); // /users/joao/docs

path.extname()

Retorna a extensão (incluindo o ponto).

const ext = path.extname('/users/joao/docs/relatorio.pdf');
console.log(ext); // .pdf

path.normalize()

Normaliza um caminho, corrigindo barras extras e removendo caminhos relativos.

const pathErrado = 'docs//projetos/../relatorio.pdf';
const normalizado = path.normalize(pathErrado);
console.log(normalizado); // docs/relatorio.pdf

path.isAbsolute()

Verifica se o caminho é absoluto.

console.log(path.isAbsolute('/users/joao')); // true
console.log(path.isAbsolute('docs/relatorio.pdf')); // false

path.format() e path.parse()

  • path.format() permite criar caminhos a partir de um objeto:
const novoCaminho = path.format({
dir: 'website/dist',
base: 'index.html'
});
console.log(novoCaminho); // website/dist/index.html
  • path.parse() retorna um objeto com as partes do caminho:
const partes = path.parse('/pasta/arquivo.txt');
console.log(partes);
/*
{
root: '/',
dir: '/pasta',
base: 'arquivo.txt',
ext: '.txt',
name: 'arquivo'
}
*/

Principais Usos

  • Montar caminhos de forma portável para salvar/abrir ficheiros.
  • Normalizar caminhos recebidos do utilizador antes de usar.
  • Extrair nome, extensão ou diretório de ficheiros.
  • Gerar caminhos absolutos a partir de relativos dentro da aplicação.

Dica de Segurança

Nunca concatene caminhos com strings (usando +), pois pode gerar inconsistências em diferentes sistemas operacionais. Sempre use os métodos do módulo path.