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 Windows tienen una estructura diferente, como: C:\users\joe\file.txt
Debe prestar atención al usar rutas en sus aplicaciones, ya que esta diferencia debe tenerse en cuenta.
Usando el Módulo path
Se incluye este módulo en sus archivos usando:
const path = require('node:path')
y puede comenzar a usar sus métodos.
Obteniendo Información de una Ruta
Dada una ruta, puede 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) // .txt
import path from 'node:path'
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txt
Puede obtener el nombre del archivo sin la extensión especificando un segundo argumento a basename
:
path.basename(notes, path.extname(notes)) // notes
Trabajando con Rutas
Puede unir dos o más partes de una ruta usando path.join()
:
path.join('/users', 'joe', 'file.txt') // /users/joe/file.txt
Puede 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 inicio
En este caso, Node.js simplemente agregará /joe.txt
al directorio de trabajo actual. Si especifica 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 diagonal, eso significa que es una ruta absoluta:
path.resolve('/etc', 'joe.txt') // /etc/joe.txt
path.normalize()
es otra función útil que intentará calcular la ruta real cuando contenga especificadores relativos como .
o ..
, o barras diagonales dobles:
path.normalize('/users/joe/../test.txt') // /users/test.txt
Ni resolve
ni normalize
comprobarán si existe la ruta. Simplemente calculan una ruta basada en la información que recibieron.