Laravel环境下Vite未遵循server.watch.ignored配置问题
解决Vite监听时跳过/resources/stuff/目录的问题
问题原因
你之前配置的"/resources/stuff/"路径匹配规则无效,Vite的watch.ignored采用anymatch匹配模式,绝对路径或不完整的相对路径无法正确覆盖该目录下所有子文件和子目录。
解决方案
1. 修正Vite配置的忽略规则
使用glob模式或正则表达式,确保匹配resources/stuff/下的所有内容:
方式一:Glob模式(推荐)
修改vite.config.js:
export default defineConfig({ server: { watch: { // 匹配该目录下所有文件和子目录 ignored: ['**/resources/stuff/**'], }, }, // 其他原有配置... });
方式二:正则表达式
如果glob模式不生效,尝试正则写法:
export default defineConfig({ server: { watch: { ignored: /resources\/stuff\/.*/, }, }, // 其他原有配置... });
2. 排除Laravel Vite插件对该目录的处理
检查vite.config.js中Laravel插件的resources数组,确保没有包含resources/stuff相关路径,否则Vite会强制扫描该目录:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; import inertia from '@inertiajs/vite-plugin'; export default defineConfig({ plugins: [ laravel({ resources: [ 'resources/css/app.css', 'resources/js/app.js', // 不要添加resources/stuff相关路径 ], }), inertia(), ], server: { watch: { ignored: ['**/resources/stuff/**'], }, }, });
3. 清除Vite缓存
删除项目根目录下的.vite缓存文件夹,避免旧缓存导致规则不生效:
rm -rf .vite
4. 验证效果
启动npm run dev后,修改resources/stuff/内的任意文件,若Vite没有触发重新构建,说明忽略规则已生效。
内容的提问来源于stack exchange,提问作者lampyridae
相关产品推荐
相关产品推荐

