使用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
相关产品推荐
相关产品推荐

