📢 Nuovo Corso Laravel API disponibile!

Percorsi dei file in Node.js

Ogni file nel sistema ha un percorso. Su Linux e macOS, un percorso potrebbe apparire come: /users/joe/file.txt, mentre i computer Windows sono diversi e hanno una struttura del tipo: C:\users\joe\file.txt

Devi prestare attenzione quando usi i percorsi nelle tue applicazioni, poiché questa differenza deve essere presa in considerazione.

Puoi includere questo modulo nei tuoi file usando const path = require('node:path'); e puoi iniziare a utilizzare i suoi metodi.

Ottenere informazioni da un percorso

Dato un percorso, puoi estrarre informazioni da esso utilizzando questi metodi:

  • dirname: ottiene la cartella genitore di un file
  • basename: ottiene la parte del nome del file
  • extname: ottiene l’estensione del file

Esempio

const path = require("node:path");
const notes = "/users/joe/notes.txt";
path.dirname(notes); // /users/joe
path.basename(notes); // notes.txt
path.extname(notes); // .txt

Puoi ottenere il nome del file senza l’estensione specificando un secondo argomento a basename:

path.basename(notes, path.extname(notes)); // notes

Lavorare con i percorsi

Puoi unire due o più parti di un percorso usando path.join():

const name = "joe";
path.join("/", "users", name, "notes.txt"); // '/users/joe/notes.txt'

Puoi ottenere il calcolo del percorso assoluto di un percorso relativo usando path.resolve():

path.resolve("joe.txt"); // '/Users/joe/joe.txt' se eseguito dalla mia cartella home

In questo caso, Node.js aggiornerà semplicemente /joe.txt alla directory di lavoro corrente. Se specifici una seconda cartella come parametro, resolve utilizzerà la prima come base per la seconda:

path.resolve("tmp", "joe.txt"); // '/Users/joe/tmp/joe.txt' se eseguito dalla mia cartella home

Se il primo parametro inizia con una barra, ciò significa che è un percorso assoluto:

path.resolve("/etc", "joe.txt"); // '/etc/joe.txt'

path.normalize() è un’altra funzione utile che cercherà di calcolare il percorso effettivo quando contiene specificatori relativi come . o .., o doppi slash:

path.normalize("/users/joe/..//test.txt"); // '/users/test.txt'

Né resolve né normalize verificheranno se il percorso esiste. Calcolano solo un percorso in base alle informazioni ottenute.