HMR natif dans Node.js : Une plongée technique
Cet article détaille comment implémenter le remplacement à chaud de modules (HMR) natif dans Node.js. Les approches traditionnelles utilisant les drapeaux `--watch` ou les systèmes de modules virtuels comme Vite sont inefficaces et souffrent d'isolement des modules. L'auteur utilise les hooks de module intégrés `node:module` de Node.js pour créer un mécanisme de mise à jour incrémentale basé sur les numéros de version des fichiers. Le cœur du système est la classe `FileTree`, qui charge et surveille l'arbre de fichiers, et le hook `useTree`, qui intercepte le processus de chargement du module, en ajoutant un numéro de version aux URL pour l'invalidation du cache. La construction d'un arbre de dépendances garantit que lorsqu'un module dépendant change, le module parent est également mis à jour, ce qui entraîne un HMR efficace et évite la réévaluation de l'arbre de modules entier.