Vite预构建为啥没把我的第三方库缓存下来?

Mc.志丹 阅读 7

我用 Vite 开发时发现每次启动都重新预构建 lodash,明明之前已经 build 过了,按理说应该走缓存才对。是不是我哪里配置错了?

我试过删 node_modules 和 .vite 重新装,但还是每次都重新处理。代码里就这么引入的:

import { debounce } from 'lodash-es';

const debouncedFn = debounce(() => {
  console.log('called');
}, 300);
我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
Zz红佑
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