Poznajemy podstawy node.js zaczynając od magicznych stałych __filename i __dirname oraz prostego modułu path. Do dzieła.

Nasz pierwszy skrypt node będzie wyglądać tak:

var filename = __filename;
var dirname = __dirname;

console.log(`Filename: ${filename}`);
// C:\Users\abc\Desktop\blog\node1\magic1.js

console.log(`Dirname: ${dirname}`);
// C:\Users\abc\Desktop\blog\node1

Nietrudno domyślić się, co on robi. Teraz zaimportujmy moduł path i wykorzystajmy funkcję isAbsolute:

var path = require('path');

var filename = __filename;
var dirname = __dirname;

console.log(`Filename: ${filename}`);
// C:\Users\abc\Desktop\blog\node1\magic1.js

console.log(`Absolute: ${path.isAbsolute(filename)}`);
// Absolute: true

console.log(`Dirname: ${dirname}`);
// C:\Users\abc\Desktop\blog\node1

console.log(`Absolute: ${path.isAbsolute(dirname)}`);
// Absolute: true

Teraz pokorzystajmy jeszcze z niego:

var path = require('path');

var filename = __filename;
var dirname = path.dirname(__filename);
var basename = path.basename(__filename);
var extension = path.extname(__filename);


console.log(`Filename: ${filename}`);
//Filename: C:\Users\abc\Desktop\blog\node1\magic1.js

console.log(`Dirname: ${dirname}`);
//Dirname: C:\Users\abc\Desktop\blog\node1

console.log(`Basename: ${basename}`);
//Basename: magic1.js

console.log(`Extension: ${extension}`);
//Extension: .js

Wyobraźmy sobie, że mamy folder files i tak jakieś pliki. Napiszemy sobie funkcję file do łapania ścieżek do nich:

var path = require('path');

function file(filename) {
    return path.join(__dirname, "files", filename);
}

console.log(file("lorem.txt"));
//C:\Users\abc\Desktop\blog\node1\files\lorem.txt
console.log(file("index.html"));
//C:\Users\abc\Desktop\blog\node1\files\index.html

Łączenie ścieżek to rzecz obecna we wszystkich językach programowania. Znając path nie będziemy mieli w node z tym problemów.