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

使用Vite构建VitePress类库时遇@siteData导入解析失败问题

解决VitePress插件构建时Rollup无法解析@siteData的问题

我开发适配VitePress的插件时,本地导入使用一切正常,但执行类库构建操作时遇到Rollup解析错误:

[vite]: Rollup failed to resolve import "@siteData" from ".../node_modules/.pnpm/vitepress@1.4.2_@.../node_modules/vitepress/dist/client/app/data.js".

以下是可行的解决方法:

  • 添加虚拟模块别名解析
    @siteData是VitePress内部的虚拟模块,仅在其运行环境中被注入,类库构建时Rollup无法识别。需要在Vite配置中手动添加别名,将其指向模拟文件或空模块:
    在vite.config.ts中配置:

    import { defineConfig } from 'vite';
    
    export default defineConfig({
      resolve: {
        alias: {
          '@siteData': './src/mocks/siteData.ts'
        }
      }
    });
    

    若无需实际使用siteData内容,可创建空模拟文件src/mocks/siteData.ts:

    export default {};
    
  • 外部化VitePress相关依赖
    若插件仅在VitePress项目中使用,可在构建配置中将相关依赖标记为外部,避免Rollup解析内部虚拟模块:

    export default defineConfig({
      build: {
        lib: {
          entry: './src/index.ts',
          formats: ['es', 'cjs']
        },
        rollupOptions: {
          external: ['vitepress', '@siteData']
        }
      }
    });
    

    构建时Rollup会跳过这些模块的解析,由使用插件的VitePress环境提供。

  • 改用VitePress官方API获取站点数据
    避免直接导入@siteData,改用VitePress提供的useSiteData()组合式函数:

    import { useSiteData } from 'vitepress';
    
    export function useMyPlugin() {
      const siteData = useSiteData();
      // 业务逻辑处理
    }
    

    这种方式依赖VitePress运行时注入,不会触发虚拟模块的直接导入。

内容的提问来源于stack exchange,提问作者typed-sigterm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:30:55