You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite Monorepo中UI库新增组件热重载失败求助

Vite Monorepo中UI库新增组件后热重载失效问题

项目基础结构

repo/
├── apps/
│   └── web/
│       ├── src/
│       │   └── App.tsx
│       ├── tsconfig.json
│       └── vite.config.ts
└── packages/
    ├── eslint-config
    ├── typescript-config
    └── ui/
        ├── src/
        │   ├── components/
        │   │   └── Button.tsx
        │   └── index.ts
        └── vite.config.ts

Vite配置

apps/web/vite.config.ts

import { resolve } from "path";
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tsconfigPaths from "vite-tsconfig-paths";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    react(),
    tsconfigPaths()
  ],
  resolve: {
    alias: {
      "@repo/ui": resolve(__dirname, "../../packages/ui/src")
    },
  },
})

packages/ui/vite.config.ts

import { resolve } from "path";
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import dts from "vite-plugin-dts";
import tsconfigPaths from "vite-tsconfig-paths";

export default defineConfig({
    plugins: [
        tsconfigPaths(),
        react(),
        dts({
            entryRoot: resolve(__dirname, "src"),
            insertTypesEntry: true
        })
    ],
    build: {
        outDir: "dist",
        emptyOutDir: true,
        lib: {
            entry: resolve(__dirname, "src/index.ts"),
            name: "@repo/ui",
            formats: ['es'],
            fileName: (format) => `index.${format}.js`
        },
        rollupOptions: {
            external: ["react", "react-dom", "react-jsx"],
            output: {
                assetFileNames: 'index-foo.[ext]'
            }
        }
    }
});

问题现象

运行pnpm dev时,修改现有组件(比如Button.tsx)的热重载正常,但在packages/ui/components文件夹新增组件(比如Foo.tsx)后,在index.ts中导出该组件时会出现找不到文件的错误:

变更后的index.ts

import "./index.css"

export * from "./components/Button" // 此文件变更可正常触发HMR
export * from "./components/Foo"    // 新增组件触发错误

错误信息

[plugin:vite:import-analysis] Failed to resolve import "./components/Foo" from "../../packages/ui/src/index.ts". Does the file exist?
/home/emfrick/turborepo-with-vite-react-tailwind/packages/ui/src/index.ts:4:14
1  |  import "./index.css";
2  |  export * from "./components/Button";
3  |  export * from "./components/Foo";
   |                 ^
4  |

疑问

这是预期行为吗?还是我在Vite配置或tsconfig中遗漏了什么?每次新增UI组件都需要重新运行pnpm dev吗?


内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 01:49:52