HOME / SINGLE POST

BLOG POST

node

Rutas de módulos locales con alias en Node.js

Introducción

Al estar realizando tu proyecto en Node.js que se divide en muchos módulos como controladores, modelos, utilidades, middlewares, etc., te encontrarás con un pequeño problema: Rutas Relativas. Estas rutas se pueden componer por demasiados puntos, saltos de carpetas y a la larga puede ocasionar problemas, como apuntar a un módulo y a la hora de correr el proyecto marque error porque está mal la ruta, sin mencionar que en nuestro código se empiece a ver feo como el siguiente código:

import modulo from '../../../../MiModulo';

Enlaces simbólicos

Una solución práctica y sencilla es crear Enlaces Simbólicos (Symlinks).

Un enlace simbólico, en sistemas Unix o GNU/linux, indica un acceso a un directorio o fichero que se encuentra en un lugar distinto dentro de la estructura de directorios.

Básicamente se pueden crear enlaces simbólicos en la carpeta “node_modules” que redirijan a la carpeta de nuestros módulos y que la aplicación de Node.js lo detecte rápidamente, así como los diferentes IDE’s como Visual Code. En sistemas Unix o GNU/Linux tenemos el comando:
ln -s archivo_fuente ruta_destino
Para Windows tenemos el comando:
mklink /d directorio_fuente ruta_destino
En este por defecto, crea enlaces simbólicos a archivos, al menos que se especifique con el parámetro “/d”.

Sin embargo, puede resultar molesto estar creando los enlaces manualmente, así que ocuparemos una herramienta que permita hacer esto con una simple configuración. Aquí es donde entra un paquete para npm.

Módulo link-module-alias

El módulo link-module-alias permite crear los enlaces simbólicos después de una instalación de los módulos de npm. Para ello instalamos el paquete:
npm i --save-dev link-module-alias
Después, dentro de nuestro package.json agregamos lo siguiente:

https://gist.github.com/Asner/a54b8b0ea5d5e3c192ff2a0d8fe89a13

Dentro de _moduleAliases irán las rutas, donde la llave es el “paquete” y la ruta, es la dirección donde creará un enlace simbólico hacia node_modules.
Como el siguiente ejemplo:

https://gist.github.com/Asner/29e82a88bfb35d0b5275385f56fe0c31

Después de esto, se pueden ejecutar dos comandos:

  1.  npm install: Instala las dependencias del proyecto y este va ejecutar el script de post-instalación.
  2. npm run postinstall: Ejecuta el script post-instalación sin la necesidad de instalar las dependencias del proyecto.

El único problema es que, en sistemas con Windows, se necesita permisos de administrador para correr el script de enlaces.
Finalmente, en tu código podrás poner:
const { users } = require('@models');

y no lo siguiente:
const { users } = require('../../../models');

Finalmente, podremos observar que se ha reducido la cantidad de rutas relativas, en mi caso personal, me ha ayudado más para mantener un código más legible. En proyectos de React también se puede usar, siguiendo los mismos pasos.

Subscribe to Newsletter

Never miss any important news. Subscribe to our newsletter.