Bien, hablemos de los cargadores de módulos. Los cargadores de módulos mejoran las dos primeras, mejoran y cambian y transforman cómo Node.js realiza una resolución y cómo lee el archivo, el módulo. Hablemos de mejorar la fase de resolución, daremos un ejemplo y luego daremos un ejemplo para la fase de carga.
Hablemos de la fase de resolución. Damos dos ejemplos. Uno es pnpm, es un gestor de paquetes como yarn y npm, pero pnpm cambia la forma en que se encuentran los módulos. Por lo tanto, los busca en el repositorio de caché central en tu disco. Actualmente, debido a que no tienen cargadores, hacen varios tipos de trucos utilizando enlaces duros para que funcione. Pero si tuvieran cargadores, si fuera ESM nativo, podrían haber modificado la fase de resolución para buscar donde quisieran. Otro ejemplo son los mapas de importación, sobrescribiendo especificadores sin ruta y esto es lo que intentaremos hacer. Escribamos un cargador que haga esto y entenderás qué es en un segundo.
Ahora, ten en cuenta que el código de ejemplo es código de demostración. No lo uses en producción, no tiene manejo de errores, no maneja casos extremos, son solo ejemplos de juguete.
Bien, hablemos de sobrescribir módulos. Este es main.js y estamos importando un módulo para sobrescribir. Un módulo para sobrescribir no existe en ningún lugar en los módulos de Node o en cualquier lugar. Entonces, si lo ejecuto, obtengo el error de módulo no encontrado, obviamente. Pero digamos que tengo un archivo overrides.json que dice que un módulo para sobrescribir realmente existe en .moduleoverride.js y este es moduleoverride.js así que imprimimos en la consola módulo sobrescrito y queremos que esto funcione. Entonces, queremos ejecutar main.js con el cargador. ¿Cómo lo hacemos? Agregamos guión guión cargador y apuntamos al cargador y si lo ejecutamos, boom, funciona. Esta es la sintaxis guión guión cargador igual o espacio, no importa y punto barra cargador.js ten en cuenta que el punto barra es importante. Si dices cargador.js buscará el paquete cargador.js no el archivo cargador.js. Bien, el punto barra es esencial.
Bien, veamos loader.js no te preocupes, iremos uno por uno y lo entenderemos. Este es el cargador, es muy muy pequeño como puedes ver escribir un cargador no es tan difícil. En primer lugar, tenemos que leer el overrides.json así que simplemente lo leemos usando el nivel superior 08 y lo analizamos para obtener el overrides.json. Perfecto, fácil, sin problemas. Ahora exportamos una función esa función debe llamarse resolve porque cuando NodeJS está cargando un cargador busca esa función exportada y recibirá tres parámetros lo veremos en un segundo y es asíncrona por lo que puedes hacer lo que quieras allí no estás limitado a la sincronicidad. Entonces hablemos de los tres parámetros. En primer lugar, el especificador el especificador del módulo es lo que está detrás de las comillas y lo siento dentro de las comillas en nuestro ejemplo un módulo para sobrescribir tal como aparece en el código.
Comments