Vite预构建为啥没把我的第三方库缓存下来? Mc.志丹 提问于 2026-03-11 11:06:19 阅读 7 优化 我用 Vite 开发时发现每次启动都重新预构建 lodash,明明之前已经 build 过了,按理说应该走缓存才对。是不是我哪里配置错了? 我试过删 node_modules 和 .vite 重新装,但还是每次都重新处理。代码里就这么引入的: import { debounce } from 'lodash-es'; const debouncedFn = debounce(() => { console.log('called'); }, 300); 我来解答 赞 5 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 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 回答 93 浏览 Vite预构建后依赖包体积反而变大了怎么办? 我在项目里给某个第三方库用了vite optimizeDeps预构建,结果打包后的vendor.js比之前还大200kb,这是怎么回事? 之前配置是这样的: optimizeDeps: { entri... Mr-培静 优化 2026-01-30 09:37:28 2 回答 19 浏览 Vite 的 manualChunks 配置怎么让第三方库单独打包? 我在用 Vite 做项目,想把像 lodash、axios 这些第三方库单独打成 vendor 包,但配置了 manualChunks 后发现它们还是被打进 main.js 里了,根本没拆出来。我试过... 打工人路阳 优化 2026-03-07 16:04:23 2 回答 32 浏览 Vite预构建时报错“Missing package”,但依赖明明已安装怎么办? 最近在用Vite开发项目,每次启动时预构建依赖都会卡住,报错说“Missing package: ‘@vue/reactivity’ required by ‘my-vue-app’”。但packag... ♫胜捷 前端 2026-02-15 23:01:32 1 回答 11 浏览 Vite 依赖预构建为什么总在启动时重新执行? 我用 Vite 搭了个 React 项目,每次 npm run dev 启动时都会看到 “Pre-bundling dependencies” 的提示,明明之前已经跑过一次了,为什么还会重新预构建?是... 程序猿智越 前端 2026-03-13 13:41:17 1 回答 12 浏览 Vite 插件里怎么处理 CSS 中的变量注入? 我在写一个 Vite 插件,想在构建时动态往 CSS 里注入一些变量,比如主题色。但试了几次发现 transform 阶段拿到的 CSS 内容没法正确替换,或者替换后样式就乱了。 我用的是 trans... 设计师诗谣 工具 2026-03-06 12:43:20 1 回答 21 浏览 VitePress 中如何在 SSR 时正确使用浏览器 API? 我在 VitePress 的页面里用了 window 对象,结果构建时报错说 window is not defined,但本地开发是好的。是不是因为 SSR 阶段没有浏览器环境? 我试过把代码包在 ... 南宫春晖 框架 2026-02-26 11:42:22 2 回答 23 浏览 Vite打包库时为什么第三方依赖会被包含进输出文件? 我用Vite的Library模式打包一个React组件库,但发现打包后的文件包含了react-i18next的代码,明明在vite.config里设置了external排除。试过调整optimizeD... 萌新.一鸣 工具 2026-02-18 16:19:26 2 回答 62 浏览 为什么Vite处理Sass比Webpack慢那么多? 我在给旧项目迁移到Vite时发现奇怪的现象,同样的Sass文件用Vite构建反而比原来的Webpack更卡顿。比如这个带变量和嵌套的CSS: :root { --primary: #3498db; -... 设计师奕森 前端 2026-02-10 21:34:31 2 回答 52 浏览 在Vue项目中选择构建工具时,Webpack和Vite有什么关键区别? 我们在准备迁移一个中型Vue项目时遇到了选型困惑。之前用Webpack打包要等十几秒,但同事说Vite可能更流畅。试过用Vite初始化后热更新确实快,但项目依赖了一些旧版loader,比如vue-lo... 端木爱豪 前端 2026-02-05 14:34:27 2 回答 87 浏览 Vite插件在build时如何修改React组件的输出内容? 我在开发Vite插件时遇到了问题,想在构建阶段自动给所有React组件添加跟踪代码。按照文档写了transform函数,但build时提示"Unexpected token",代码根本没生效: exp... 南宫一涵 前端 2026-01-30 23:51:26
大概率是你的 lodash-es 版本写的有问题,比如用了 * 或 latest 之类的,每次 install 都当新版本处理,缓存就失效了。
检查一下 package.json 里的版本号:
如果是版本号的问题,改成固定版本号然后删掉 node_modules 和 .vite 目录重新来一次就行了。
如果版本号是固定的,那看看是不是项目里有 workspace 或 monorepo 配置,有时候父项目的依赖会影响缓存。
还有一个小技巧,可以在 vite.config.ts 里显式配置预构建:
这样能强制 Vite 预构建这个库。
先看看你的 package.json 是不是版本号写了 latest 吧,十有八九是这个问题。