Skip to content
Notes🇬🇧 Read in English

Vite : activer le polling sous WSL pour le hot reload

Quand un projet vit sur un disque Windows monté dans WSL (/mnt/c/...), le hot reload de Vite ne se déclenche pas : on modifie un fichier, rien ne bouge dans le navigateur.

Cause

WSL2 utilise le protocole 9P pour accéder aux fichiers Windows via /mnt/c. Les événements inotify ne remontent pas à travers cette couche. Le watcher de Vite (chokidar) s’appuie dessus et ne voit jamais les modifications.

Correctif

Activer le polling dans la config Vite. Avec Astro, ça se passe dans astro.config.mjs :

export default defineConfig({
  vite: {
    server: {
      watch: {
        usePolling: true,
      },
    },
  },
});

Le hot reload fonctionne à nouveau, au prix d’un peu plus de CPU : le watcher scanne les fichiers à intervalle régulier au lieu d’écouter des événements du noyau.

Alternative

Déplacer le projet dans le système de fichiers natif de WSL (~/projets/... plutôt que /mnt/c/...). Les événements inotify fonctionnent alors normalement, sans polling. Mais si l’éditeur tourne côté Windows, l’accès aux fichiers passe par \\wsl$, ce qui a ses propres limites.

Références