【发布时间】:2023-01-16 18:50:32
【问题描述】:
在 Vue + Vite 项目中,我有这样的文件夹结构
问题是 vite 没有检测到 A.vue 或 B.vue 中的更改 (ctrl+s),即嵌套在组件文件夹中 NestedFolder 下的组件。其他地方工作正常。
我的 vite.config.js 看起来像这样,
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,
}
}
}
})
我已经根据 vite HMR API 文档尝试了自定义 HMR 函数,让它使用它发送完整的重新加载。
...
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: '*'
});
}
},
}
], ...
我查看了 vite 的 HMR API 文档,但无法弄清楚如何在使用自定义 hmr 函数时将更新事件发送到 vite
任何有关如何解决此问题的帮助/建议将不胜感激。
【问题讨论】:
-
我cannot reproduce。你能分享一个问题重现的链接吗?
-
您在项目中使用的是哪个版本的 Vite?我怀疑更新到最新的稳定版本可能会解决您的问题。您可能还需要将您的配置重构为最新的。
-
也无法重现。请提供更多信息。
-
@tony19 我试图在 stackblitz 和 codesandbox 上重现该问题,但没有成功。知道这不是默认行为会很有帮助。我假设我需要为嵌套文件夹配置它。工程真的很大。也许其他一些包干扰了 vite 配置。谢谢你。
-
@JStanton 我正在使用 v3.0.1
标签: javascript vue.js vite