不一定。 Vite 是否自动重建缓存,取决于你升级依赖的方式,以及锁文件是否发生了变化。
触发自动重建的条件
Vite 通过比对缓存元数据与当前项目状态来决定是否重新预构建。如果以下任意一项发生了变化,Vite 会自动重新运行依赖预构建:
- 包管理器的锁文件内容 (如
package-lock.json、yarn.lock、pnpm-lock.yaml)。 patches文件夹的修改时间。vite.config.js中的相关配置字段。NODE_ENV的值。
因此,如果你是通过标准的包管理器命令(如 npm install、pnpm update)升级依赖,通常锁文件会同步更新,Vite 再次启动时大概率会自动检测到并重建缓存。
为什么有时感觉"没生效"?
如果你手动修改了 node_modules 里某个包的文件,或者遇到缓存状态不一致的边界情况,Vite 的缓存逻辑可能无法正确感知。此外,浏览器对预构建依赖也做了强缓存(max-age=31536000, immutable),这会加剧"改了没反应"的观感。
强制重建的推荐方法
如果你遇到依赖行为异常、HMR 失效,或者就是想确保万无一失,可以手动强制刷新:
-
启动时加
--force标志 :这是最干净的方式,会跳过缓存判断直接重新预构建。bashvite --force # 或者 npm run dev -- --force -
手动删除缓存目录 :删除
node_modules/.vite文件夹,下次启动时会自动重建。
一个小提示:如果你用的是较新的 Vite 6.2+,官方对缓存判定逻辑做了优化,日常开发中手动删缓存的频率已经降低了很多。