Yarn工作区依赖项未在虚拟缓存中更新



TLDR: Vite未更新node_modules/.vite缓存中的工作区依赖项。

我在本地运行一个vite服务器,并使用yarn工作区来组织我的项目。

我的(简化)目录:

web/              # @my_app workspace
frontend/       # @my_app/frontend workspace
App.tsx
node_modules/
.vite/      # the vite cache
backend/
shared/
foo.ts

在前端,我使用shared/foo.ts中定义的常量。

如果我在foo.ts中定义了一个新的常量export const bar = 1,尝试从App.tsx导入它,并在本地运行vite,我得到以下错误:

Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/@my_app_foo.js?v=cccdb61c' does not provide an export named 'bar' (at App.tsx)

事实上,如果我检查文件/node_modules/.vite/deps/@my_app_foo.js,我可以看到它没有更新我的最新更改。

我如何让vite更新缓存的依赖当我做更改?

注意:相关的依赖关系不会经常改变,所以它们不需要在更新时热加载(只需要在我运行vite时缓存是最新的)。

Vite预绑定依赖项并在node_modules/.vite/deps中本地缓存。

有两种方法可以强制vite每次重新绑定工作区依赖项:
  1. vite --force。这将在每次本地运行vite时更新node_modules/.vite中绑定的依赖项(并且深度将在node_modules/.vite/deps_temp而不是deps中)。
  2. vite.config.js中配置bundle优化:
export default defineConfig({
optimizeDeps: { exclude: ['@my_app'] },
// ...
});

这将从node_modules/.vite缓存中排除@my_app工作空间内容。

两种解决方案都能解决我所面临的问题。

相关内容

  • 没有找到相关文章

最新更新