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