Skip to content

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:

javascript
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 archivo
  • basename: obtiene la parte del nombre del archivo
  • extname: obtiene la extensión del archivo

Ejemplo

javascript
const path = require('node:path')
const notes = '/users/joe/notes.txt'

path.dirname(notes) // /users/joe
path.extname(notes) // .txt
javascript
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:

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

Trabajando con Rutas

Puede unir dos o más partes de una ruta usando path.join():

javascript
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():

javascript
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:

javascript
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:

javascript
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.