Rutas de Archivos en Node.js
Rutas de Archivos del Sistema
Cada archivo en el sistema tiene una ruta. En Linux y macOS, una ruta podría verse así: /users/joe/file.txt
mientras que las computadoras con Windows tienen una estructura diferente como: C:\users\joe\file.txt
Debes prestar atención al usar rutas en tus aplicaciones, ya que esta diferencia debe tenerse en cuenta.
Usando el Módulo path
Incluyes este módulo en tus archivos usando:
const path = require('node:path')y puedes comenzar a usar sus métodos.
Obtener Información de una Ruta
Dada una ruta, puedes extraer información de ella usando estos métodos:
dirname: obtiene la carpeta padre de un archivobasename: obtiene la parte del nombre del archivoextname: obtiene la extensión del archivo
Ejemplo
const path = require('node:path')
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txtimport path from 'node:path'
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txtPuedes obtener el nombre del archivo sin la extensión especificando un segundo argumento a basename:
path.basename(notes, path.extname(notes)) // notesTrabajando con Rutas
Puedes unir dos o más partes de una ruta usando path.join():
path.join('/users', 'joe', 'file.txt') // /users/joe/file.txtPuedes obtener el cálculo de la ruta absoluta de una ruta relativa usando path.resolve():
path.resolve('joe.txt') // /Users/joe/joe.txt si se ejecuta desde mi carpeta de inicio
path.resolve('tmp', 'joe.txt') // /Users/joe/tmp/joe.txt si se ejecuta desde mi carpeta de inicioEn este caso, Node.js simplemente agregará /joe.txt al directorio de trabajo actual. Si especificas un segundo parámetro como una carpeta, resolve usará el primero como base para el segundo.
Si el primer parámetro comienza con una barra, eso significa que es una ruta absoluta:
path.resolve('/etc', 'joe.txt') // /etc/joe.txtpath.normalize() es otra función útil que intentará calcular la ruta real cuando contiene especificadores relativos como . o .., o barras dobles:
path.normalize('/users/joe/../test.txt') // /users/test.txtNi resolve ni normalize verificarán si la ruta existe. Simplemente calculan una ruta basada en la información que obtuvieron.