Chemins de fichiers Node.js
Chemins de fichiers système
Chaque fichier du système possède un chemin. Sous Linux et macOS, un chemin peut ressembler à ceci : /users/joe/file.txt
tandis que les ordinateurs Windows ont une structure différente, telle que : C:\users\joe\file.txt
Vous devez faire attention lorsque vous utilisez des chemins dans vos applications, car cette différence doit être prise en compte.
Utilisation du module path
Vous incluez ce module dans vos fichiers à l'aide de :
const path = require('node:path')
et vous pouvez commencer à utiliser ses méthodes.
Extraction d'informations à partir d'un chemin
Étant donné un chemin, vous pouvez en extraire des informations à l'aide de ces méthodes :
dirname
: obtient le dossier parent d'un fichierbasename
: obtient la partie nom de fichierextname
: obtient l'extension du fichier
Exemple
const path = require('node:path')
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txt
import path from 'node:path'
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txt
Vous pouvez obtenir le nom du fichier sans l'extension en spécifiant un deuxième argument à basename
:
path.basename(notes, path.extname(notes)) // notes
Travailler avec des chemins
Vous pouvez joindre deux parties ou plus d'un chemin en utilisant path.join()
:
path.join('/users', 'joe', 'file.txt') // /users/joe/file.txt
Vous pouvez obtenir le calcul du chemin absolu d'un chemin relatif en utilisant path.resolve()
:
path.resolve('joe.txt') // /Users/joe/joe.txt si exécuté depuis mon dossier personnel
path.resolve('tmp', 'joe.txt') // /Users/joe/tmp/joe.txt si exécuté depuis mon dossier personnel
Dans ce cas, Node.js ajoutera simplement /joe.txt
au répertoire de travail actuel. Si vous spécifiez un deuxième paramètre en tant que dossier, resolve
utilisera le premier comme base pour le second.
Si le premier paramètre commence par une barre oblique, cela signifie qu'il s'agit d'un chemin absolu :
path.resolve('/etc', 'joe.txt') // /etc/joe.txt
path.normalize()
est une autre fonction utile qui tentera de calculer le chemin réel lorsqu'il contient des spécificateurs relatifs comme .
ou ..
, ou des doubles barres obliques :
path.normalize('/users/joe/../test.txt') // /users/test.txt
Ni resolve
ni normalize
ne vérifieront si le chemin existe. Ils calculent simplement un chemin en fonction des informations qu'ils ont reçues.