Vite预构建为啥没把我的第三方库缓存下来? Mc.志丹 提问于 2026-03-11 11:06:19 阅读 35 优化 我用 Vite 开发时发现每次启动都重新预构建 lodash,明明之前已经 build 过了,按理说应该走缓存才对。是不是我哪里配置错了? 我试过删 node_modules 和 .vite 重新装,但还是每次都重新处理。代码里就这么引入的: import { debounce } from 'lodash-es'; const debouncedFn = debounce(() => { console.log('called'); }, 300); 我来解答 赞 7 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Zz红佑 Lv1 这问题我之前也遇到过,Vite 预构建的缓存机制是基于依赖的 hash 的,每次启动都会检查 package.json 和 lock 文件有没有变。 大概率是你的 lodash-es 版本写的有问题,比如用了 * 或 latest 之类的,每次 install 都当新版本处理,缓存就失效了。 检查一下 package.json 里的版本号: "lodash-es": "^4.17.21" // 固定版本OK "lodash-es": "latest" // 这就完蛋了,每次都变 如果是版本号的问题,改成固定版本号然后删掉 node_modules 和 .vite 目录重新来一次就行了。 如果版本号是固定的,那看看是不是项目里有 workspace 或 monorepo 配置,有时候父项目的依赖会影响缓存。 还有一个小技巧,可以在 vite.config.ts 里显式配置预构建: export default defineConfig({ optimizeDeps: { include: ['lodash-es'] } }) 这样能强制 Vite 预构建这个库。 先看看你的 package.json 是不是版本号写了 latest 吧,十有八九是这个问题。 回复 点赞 2026-03-11 11:07 加载更多 相关推荐 2 回答 126 浏览 Vite预构建后依赖包体积反而变大了怎么办? 我在项目里给某个第三方库用了vite optimizeDeps预构建,结果打包后的vendor.js比之前还大200kb,这是怎么回事? 之前配置是这样的: optimizeDeps: { entri... Mr-培静 优化 2026-01-30 09:37:28 2 回答 44 浏览 Vite打包时如何正确配置Rollup排除node_modules中的特定包? 我在用 Vite 构建 Vue3 项目,想通过 Rollup 配置把某个第三方库(比如 lodash-es)从打包结果中排除,但试了几次都没成功,build 后还是被打包进去了。 我查了文档,在 vi... 小婉琳 前端 2026-03-27 07:59:22 2 回答 51 浏览 Vite 的 manualChunks 配置怎么让第三方库单独打包? 我在用 Vite 做项目,想把像 lodash、axios 这些第三方库单独打成 vendor 包,但配置了 manualChunks 后发现它们还是被打进 main.js 里了,根本没拆出来。我试过... 打工人路阳 优化 2026-03-07 16:04:23 2 回答 76 浏览 Vite预构建时报错“Missing package”,但依赖明明已安装怎么办? 最近在用Vite开发项目,每次启动时预构建依赖都会卡住,报错说“Missing package: ‘@vue/reactivity’ required by ‘my-vue-app’”。但packag... ♫胜捷 前端 2026-02-15 23:01:32 1 回答 38 浏览 Vite 之后下一代构建工具会是什么? 最近项目从 Webpack 切到 Vite 后快了不少,但看到社区在讨论 Turbopack、Rspack 这些新工具,有点迷茫:到底该学哪个?它们真能取代 Vite 吗? 我试了下 Rspack,配... 东方羽霏 前端 2026-03-22 15:28:22 2 回答 63 浏览 Vite 打包后 HTML 中的静态资源路径为什么不对? 我用 Vite 构建项目后,发现生成的 index.html 里引用的 JS 和 CSS 文件路径是相对路径,部署到子目录时就加载不到了。明明配置了 base 路径,但好像没生效? 比如我的项目部署在... 轩辕梦玲 前端 2026-03-16 07:46:23 1 回答 38 浏览 Vite配置SSR时如何正确处理客户端和服务器端的模块分离? 我在用 Vite 搭建 SSR 项目时,发现有些模块只能在客户端运行(比如用到 window 对象),但构建时服务端也会尝试打包这些代码,导致报错。我试过用 import.meta.env.SSR 判... 端木蕴轩 工具 2026-03-15 22:30:24 1 回答 53 浏览 Vite 启动时为什么总在重复预构建依赖? 我最近用 Vite + React 开发项目,每次重新启动 dev server 的时候,控制台都会花好几秒重新预构建一堆依赖,比如 react、lodash 这些。明明没改过 node_module... 司马新杰 前端 2026-03-14 18:55:21 1 回答 25 浏览 Vite 里怎么自定义 esbuild 的配置? 我最近在用 Vite 搭项目,发现它默认用 esbuild 做依赖预构建和 TS 转译,但我想改一下 esbuild 的 target 或加个 loader,试了直接在 vite.config.js ... Mr.俊娜 前端 2026-03-14 17:05:15 2 回答 54 浏览 Vite 依赖预构建为什么总在启动时重新执行? 我用 Vite 搭了个 React 项目,每次 npm run dev 启动时都会看到 “Pre-bundling dependencies” 的提示,明明之前已经跑过一次了,为什么还会重新预构建?是... 程序猿智越 前端 2026-03-13 13:41:17
大概率是你的 lodash-es 版本写的有问题,比如用了 * 或 latest 之类的,每次 install 都当新版本处理,缓存就失效了。
检查一下 package.json 里的版本号:
如果是版本号的问题,改成固定版本号然后删掉 node_modules 和 .vite 目录重新来一次就行了。
如果版本号是固定的,那看看是不是项目里有 workspace 或 monorepo 配置,有时候父项目的依赖会影响缓存。
还有一个小技巧,可以在 vite.config.ts 里显式配置预构建:
这样能强制 Vite 预构建这个库。
先看看你的 package.json 是不是版本号写了 latest 吧,十有八九是这个问题。