¿Cómo tener un alias de ruta en Node.js?

Node.js tiene toneladas de módulos que pueden ser muy difíciles de manejar. Por lo tanto, es una buena práctica tener una estructura de directorios ordenada y bien definida.

En este artículo, vamos a tratar un problema que involucra a los módulos de Node.js. Primero comprendamos cuál es la necesidad de tener un alias de ruta.

Hay muchas dependencias, módulos y rutas relativas con las que tenemos que lidiar mientras trabajamos con Node.js. Escribir rutas e importar módulos de Node.js es propenso a errores y puede ser agotador. Las funciones de finalización de código como IntelliSense pueden ayudar mucho, pero aún así, esto puede convertirse en un desafío a medida que crece la base de código. Cambiar la estructura de directorios del proyecto conduce a un cambio en todas las apariciones de los módulos a los que se hace referencia varias veces a lo largo del proyecto. El trabajo de mantenimiento del proyecto es alto, propenso a errores, confuso y agotador.

A continuación se muestra una muestra de la ruta relativa que debe importarse cada vez que necesitamos usar un módulo.

Ejemplo de ruta relativa:

Javascript

import React, { component } from 'react';
const Module_Name = require('../../../../../../../../Module_Name');
import Icon from '../atoms/Typography';
import { userFetchRequest } from '../../../store/actions';

Y esa es la razón para usar el alias de la ruta.

Los alias representan rutas de archivos o direcciones URL para evitar escribir rutas o direcciones URL absolutas completas. Los alias de ruta hacen que todo sea simple y compacto, lo que se traduce en menos escritura, una mejor comprensión de la estructura del directorio, fácil mantenimiento y menos errores. Hay diferentes formas de lograr esto; que van desde la configuración de la resolución del paquete web (React), el uso de un alias de módulo o la configuración de la baseUrl y las rutas en el archivo tsconfig en el caso de TypeScript .

 Acercarse:

Para registrar un alias module-alias modifica el método interno Module._resolveFilename para que cuando importemos cualquier módulo primero haga coincidir el nombre con uno de los alias registrados, y si coincide entonces se sugiere e importa el módulo ya existente. module-alias modifica el Module._nodeModulePaths interno para que el directorio actual se comporte como el directorio node_modules.

Pasos a seguir:

Cree alias de directorios y registre rutas de módulos personalizadas en NodeJS usando module-alias .

Primero instalemos module-alias

Sintaxis:

npm install module-alias

Producción:

resultado esperado después de la instalación

Después de la instalación, agregue el siguiente código a su archivo package.json y configúrelo como desee. 

Nota: elimine todos los comentarios en el archivo json para evitar errores de pelusa.

Javascript

// Aliases
"_moduleAliases": {
  "@root"      : ".", // root directory
  "@deep"      : "src/some/deep/directory/or/file",
  "@my_module" : "lib/some-file.js",
  "something"  : "src/foo", // Or without @. It could be any string
}
   
// following is optional
// Custom module directories, same as 
//`node_modules` but with private modules
"_moduleDirectories": ["node_modules_custom"],

Su archivo json se verá como a continuación:

Después de eso, agregue esta línea en la parte superior del archivo principal ( index.js ) de su aplicación, antes de cualquier código.

Javascript

require('module-alias/register')

El código anterior registra sus alias. Si tiene IntelliSense en nuestro IDE, se sugerirá automáticamente.

Finalmente, puedes ver el cambio.

Javascript

require('name_of_module_you_require')
const module = require('@root/some-module')
const veryDeepModule = require('@deep/my-module')
  
// module from `node_modules_custom` directory
 const customModule = require('my_private_module') 
  
// Or ES6
import 'name_of_module_you_require'
import module from '@root/some-module'
import veryDeepModule from '@deep/my-module'
  
// Module from `node_modules_custom` directory
import customModule from 'my_private_module'

Salida final:

En la imagen a continuación, debería poder ver los alias del módulo sugeridos por Intellisense en el Código VS (@sendgrid/mail es un ejemplo del resultado esperado)

Alias ​​de módulo que sugiere Intellisense

Publicación traducida automáticamente

Artículo escrito por tr_abhishek y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *