Vite HMR ne peut pas détecter les modifications apportées aux composants dans les sous-dossiers
P粉854119263
P粉854119263 2023-11-04 09:37:46
0
1
676

Dans le projet Vue + Vite, j'ai cette structure de dossiers

Le problème est que vite ne peut pas détecter les changements (ctrl+s) dans A.vue ou B.vue, c'est-à-dire les composants imbriqués sous NestedFolder dans le dossier des composants. Tout le reste fonctionne bien.

Mon vite.config.js ressemble à ceci,

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue()
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
      '@public': fileURLToPath(new URL('./public', import.meta.url))
    }
  },
  server: {
    proxy: {
      '/api': {
        target: 'XXX',
        changeOrigin: true,
        secure: false,      
        ws: true,
      }
    }
  }
})

J'ai essayé la fonction HMR personnalisée selon la documentation de l'API vite HMR et je lui ai demandé d'envoyer un rechargement complet en l'utilisant.

...
plugins: [
    vue(),
    {
      name: 'custom-hmr',
      enforce: 'post',
      // HMR
      handleHotUpdate({ file, server }) {
        if (file.endsWith('.vue')) {
          console.log('reloading json file...');
  
          server.ws.send({
            type: 'reload',          
            path: '*'
          });
        }
      },
    }
  ], ...

J'ai consulté la documentation de l'API HMR de vite mais je ne sais pas comment envoyer des événements de mise à jour à vite lors de l'utilisation d'une fonction hmr personnalisée

Toute aide/conseil sur la façon de résoudre ce problème serait grandement apprécié.

P粉854119263
P粉854119263

répondre à tous(1)
P粉412533525

D'accord, j'ai résolu le problème. Le problème ne vient pas des dossiers imbriqués. Vite semble ignorer les composants importés à l'aide de chemins absolus.

Par exemple, Vite ne détectera pas les modifications apportées aux composants importés :

import Dropdown from '@/components/GlobalDropdown.vue'
//@ resolves to /src

Mais détecter les changements relatifs aux importations :

import LoadingSpinner from '../LoadingSpinner.vue'

Je ne trouve aucun paramètre permettant de résoudre ce problème. Mais le chemin relatif de l’importation du composant résout ce problème. Est-ce un problème?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal