Utiliser des chemins de fichier dans Node.js

Effectué

En tant que nouveau développeur chez Tailwind Traders, vous devez savoir comment gérer les chemins d’accès aux fichiers et aux dossiers. Quand vous avez de nombreux fichiers ou dossiers, créer manuellement les chemins peut devenir fastidieux. Node.js intègre des constantes et des utilitaires qui facilitent la création des chemins de fichiers.

Déterminer le répertoire actif avec __dirname

Parfois, vous ne savez pas dans quel répertoire votre programme s’exécute. Vous voulez juste qu’il utilise le chemin du répertoire actif.

📂 stores
    📂 201
        📂 sales

Node.js expose le chemin complet du répertoire actif via la constante __dirname.

console.log(__dirname);

Si vous exécutez ce code à partir du dossier sales dans la structure de dossiers suivante, la valeur de _dirname est :

/stores/201/sales

Utiliser des chemins d’accès avec le module path

Les chemins sont un sujet tellement fréquent que Node.js inclut un module appelé path spécialement pour l’utilisation des chemins.

Tout comme le module fs, le module path est fourni avec Node.js et n’a pas besoin d’être installé. Il suffit juste de le référencer en haut de votre fichier.

const path = require("path");

Joindre des chemins d’accès avec path.join

Le module path utilise le concept de chemins de fichier et de dossier, qui sont juste des chaînes. Par exemple, si vous souhaitez obtenir le chemin du dossier stores/201, vous pouvez utiliser le module path pour effectuer cette opération.

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

L’avantage d’utiliser le module path au lieu de concaténer les chaînes est de permettre à votre programme de s’exécuter aussi bien sur Windows que sur Linux. Le module path met toujours en forme les chemins correctement, quel que soit le système d’exploitation sur lequel il est exécuté. Dans l’exemple précédent, path.join retournerait stores\201 sur Windows, avec une barre oblique inverse au lieu d’une barre oblique.

Déterminer les extensions de nom de fichier avec path.extname

Le module path (chemin) peut également identifier l’extension d’un nom de fichier. Si vous voulez déterminer si votre fichier est un fichier JSON, utilisez la méthode path.extname.

console.log(path.extname("sales.json"));

La sortie est la suivante :

.json

Conseil

Notez que le module path ne se soucie pas de savoir si les choses existent vraiment. Les chemins sont conceptuels, pas physiques. Il ne fait que générer et analyser des chaînes pour vous.

Obtenir tout ce que vous devez savoir sur un fichier ou un chemin

Le module path contient de nombreuses méthodes différentes qui effectuent des opérations différentes. Toutefois, vous pouvez obtenir la plupart des informations dont vous avez besoin sur un chemin ou un fichier en utilisant la méthode parse. Cette méthode retourne un objet qui contient : le répertoire actif, le nom du fichier, l’extension de nom de fichier et même le nom du fichier sans l’extension.

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));

La sortie est la suivante :

{
  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'
}

Il existe de nombreuses autres méthodes utiles dans le module path, mais les méthodes expliquées ici les principaux concepts que vous utiliserez probablement le plus. Dans l’exercice suivant, vous allez utiliser le module path pour créer des chemins et identifier les fichiers .json.