Trabalhar com caminhos de ficheiros no Node.js
Como um novo desenvolvedor na Tailwind Traders, você precisa saber como gerenciar caminhos para arquivos e pastas. Se tiver muitos ficheiros ou pastas, criar caminhos manualmente pode ser aborrecido. O Node.js fornece algumas ferramentas e constantes incorporadas para facilitar os caminhos de ficheiro.
Determine o diretório atual com __dirname
Às vezes, você não sabe em qual diretório seu programa está sendo executado. Você só quer que ele use o caminho do diretório atual.
📂 stores
📂 201
📂 sales
O Node.js expõe o caminho completo para o diretório atual através da constante __dirname
.
console.log(__dirname);
Se você executar esse código da pasta de vendas na seguinte estrutura de pastas, o _dirname
valor é:
/stores/201/sales
Trabalhar com caminhos com o módulo de caminho
Os caminhos são um assunto referido tantas vezes, que o Node.js inclui um módulo chamado path (caminho), especificamente para trabalhar com caminhos.
Tal como o módulo fs, o módulo path é transferido com o Node.js e não precisa de ser instalado. Só precisa de o referenciar na parte superior do seu ficheiro.
const path = require("path");
Junte-se a caminhos com path.join
O módulo path funciona com o conceito de caminhos de ficheiros e pastas, que são apenas cadeias. Por exemplo, se quiser obter o caminho da pasta stores/201, pode utilizar o módulo path para tal.
const currentPath = path.join("stores", "201");
console.log(currentPath); // stores/201
const fullPath = path.join(__dirname, "stores", "201");
console.log(fullPath); // /nodejs-files/stores/201
O motivo por que deve utilizar o módulo path em vez de concatenar cadeias é que o seu programa poderá ser executado no Windows ou Linux. O módulo de caminho formata caminhos corretamente para qualquer sistema operacional em que esteja sendo executado. No exemplo anterior, path.join
devolveria stores\201
no Windows com uma barra invertida, em vez de uma barra.
Determine as extensões de nome de arquivo com path.extname
O módulo de caminho também pode identificar a extensão de um nome de arquivo. Se você tiver um arquivo e quiser identificar se é um arquivo JSON, poderá usar o path.extname
método.
console.log(path.extname("sales.json"));
A saída é:
.json
Gorjeta
Para o módulo path, não é importante se os conteúdos existem ou não. Os caminhos são conceptuais e não físicos. O módulo está apenas a compilar e analisar cadeias de forma automática.
Obtenha tudo o que precisa de saber sobre um ficheiro ou caminho
O módulo path contém muitos métodos diferentes que realizam várias ações. No entanto, pode obter a maioria das informações necessárias sobre um caminho ou ficheiro ao utilizar o método parse
. Esse método retorna um objeto contendo: o diretório atual em que você está, o nome do arquivo, a extensão do nome do arquivo e até mesmo o nome do arquivo sem a extensão.
const currentPath = path.parse("stores/201/sales.json")
console.log(currentPath);
const fullPath = path.join(__dirname, "stores", "201", "/sales.json");
console.log(path.parse(fullPath));
A saída é:
{
root: '',
dir: 'stores/201',
base: 'sales.json',
ext: '.json',
name: 'sales'
}
{
root: '/',
dir: '/workspaces/node-essentials/nodejs-files/stores/201',
base: 'sales.json',
ext: '.json',
name: 'sales'
}
Há muitos métodos de utilidade mais úteis no módulo de caminho , mas os métodos explicados aqui são os principais conceitos que você provavelmente usará com mais frequência. No próximo exercício, irá utilizar o módulo path para compor caminhos e identificar ficheiros .json.