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étodo | Descriçã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.
