HMR nativo en Node.js: Una inmersión técnica

2025-06-04

Este artículo detalla cómo implementar la sustitución en caliente de módulos (HMR) nativa en Node.js. Los enfoques tradicionales que usan los indicadores `--watch` o sistemas de módulos virtuales como Vite son ineficientes y sufren de aislamiento de módulos. El autor aprovecha los ganchos de módulo integrados de `node:module` de Node.js para crear un mecanismo de actualización incremental basado en números de versión de archivos. El núcleo es la clase `FileTree`, que carga y monitorea el árbol de archivos, y el gancho `useTree`, que intercepta el proceso de carga del módulo, agregando un número de versión a las URL para la invalidación de caché. La construcción de un árbol de dependencias garantiza que, cuando un módulo dependiente cambia, el módulo padre también se actualiza, lo que resulta en un HMR eficiente y evita la reevaluación de todo el árbol de módulos.

Leer más
Desarrollo Carga de Módulos

Hackeando los ganchos de módulos de Node para un desarrollo front-end ultrarrápido

2025-05-07

Para acelerar el desarrollo frontend, el autor creó una serie de ganchos de módulos Node ortogonales. Un cargador de módulos transforma JSX en JS, otro remapea las importaciones, otro busca archivos .{ts,tsx,jsx} cuando no encuentra .js, y un último funciona con FileTree, utilizando la invalidación de caché de cadenas de consulta para cargar la última versión de los archivos. Los eventos de actualización de FileTree desencadenan reconstrucciones del frontend, con control de versiones de módulos que garantiza que los módulos solo se re-ejecuten si sus dependencias cambian, preservando el estado de tiempo de ejecución y evitando reiniciar todo el proceso.

Leer más
Desarrollo