VitePress 中如何自定义首页的 hero 图片路径? 博主林莹 提问于 2026-03-10 21:36:19 阅读 62 框架 我在用 VitePress 搭建文档站,想改首页 hero 区域的背景图,但图片放在 public 目录下引用不到,试了相对路径也不行,一直 404。 配置里写的是 heroImage: '/logo.png',图片确实放在 public/logo.png 了,但页面加载时请求的是 /docs/logo.png,明显路径不对。是不是 VitePress 对 public 的处理有啥特别规则? 我来解答 赞 16 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 程序员司翰 Lv1 VitePress 的 public 目录跟普通 Vite 项目不太一样,路径处理有点坑。 问题在于你很可能配置了 base: '/docs/'。VitePress 的 base 会影响所有资源的路径,但 public 目录的文件在构建时会被直接复制到输出目录根目录,不受 base 影响。所以你写 heroImage: '/logo.png',实际请求的是 /docs/logo.png,但文件其实在 /logo.png。 几个解决办法: 方法一:去掉 base 配置(如果可以的话) 如果你的站点不是部署在子路径,就把 base 改成 '/',这样就正常了。 方法二:用完整的绝对路径 直接写 heroImage: '/docs/logo.png',这样就匹配上你实际的请求路径了。 方法三:把图片放到 .vitepress/public 目录下 这是更推荐的做法。VitePress 会自动处理这个目录下的资源路径,不用纠结 base 的问题。直接 heroImage: '/logo.png' 就行,开发和构建都能正常工作。 简单说就是你配置了 base 但 public 目录的文件路径没跟上,改成方法三最省心。 回复 点赞 1 2026-03-10 22:02 加载更多 相关推荐 2 回答 71 浏览 VitePress 中如何正确引入自定义 Vue 组件? 我在 VitePress 项目里想用自己写的 Vue 组件,但总是报错说组件未注册。明明已经按文档在 .vitepress/components 里放了组件,也重启了 dev server,还是不行。... a'ゞ浚博 框架 2026-03-10 12:05:20 2 回答 56 浏览 VitePress 中如何正确使用 Vue 组件的异步数据获取? 我在 VitePress 里写了一个简单的 Vue 组件,想在页面加载时从 API 拿点数据,但发现 onMounted 里请求的数据在 SSR 阶段不生效,页面首次渲染是空的,只有客户端激活后才显示... Mr.正利 框架 2026-03-04 18:27:21 1 回答 48 浏览 VitePress 中如何在 SSR 时正确使用浏览器 API? 我在 VitePress 的页面里用了 window 对象,结果构建时报错说 window is not defined,但本地开发是好的。是不是因为 SSR 阶段没有浏览器环境? 我试过把代码包在 ... 南宫春晖 框架 2026-02-26 11:42:22 2 回答 51 浏览 VitePress SSR中如何在服务端渲染动态生成的页面内容? 我在用VitePress搭建文档站点时遇到了SSR问题。通过getPages动态生成的路由页面,在服务端渲染时内容显示为空白,但客户端刷新又能正常显示。我尝试在组件setup里用onMounted获取... Air-艺晗 框架 2026-02-11 06:25:33 2 回答 81 浏览 VitePress SSR时动态导入组件报错,应该如何处理? 在用VitePress搭建文档网站时,我尝试在侧边栏动态导入一个统计组件,但SSR时老是报错说无法resolve模块。import('./stats.vue')这种写法在客户端正常,但服务端就挂了。试... 诸葛春艳 框架 2026-01-29 16:17:23 1 回答 62 浏览 Lighthouse 报告中 LCP 元素为何总是图片? 我用 Lighthouse 测速时发现 LCP(最大内容绘制)元素老是某张 hero 图片,明明我已经加了 loading="eager" 和 fetchpriority="high",但分数还是低。... 码农一可 工具 2026-03-13 22:37:17 2 回答 86 浏览 开发自定义Webpack Loader时如何获取原始文件路径? 我正在写一个自定义的Webpack loader,想在处理文件时拿到这个文件在磁盘上的绝对路径,但不知道怎么取。试过用this.resourcePath,但不确定是不是正确的做法,文档看得有点懵。 比... ♫青燕 前端 2026-02-24 20:18:20 2 回答 106 浏览 Vant的Image组件图片路径正确但无法显示,如何解决? 在Vue项目里用Vant的Image组件,图片路径写对了但页面就是不显示,到底是哪里出问题了? 代码是这样写的: <template> <van-image :src="i... a'ゞ倩影 组件 2026-02-12 12:36:30 1 回答 94 浏览 Tiptap 中如何自定义图片上传逻辑? 我用 Tiptap 做富文本编辑器,想替换默认的图片插入方式,改成上传到自己的服务器。但文档里没找到清晰的例子,试了扩展 Image 节点也不生效。 现在点插入图片还是直接贴 URL,我想改成弹出文件... 端木丽珍 交互 2026-03-19 19:52:24 1 回答 77 浏览 Taro 中如何正确处理微信小程序和 H5 端的图片路径差异? 我在用 Taro 开发一个多端项目,本地图片在 H5 上能正常显示,但编译到微信小程序就加载失败了。查了文档说要放 src/assets 下,也试过 require 引入,但还是不行。是不是不同端对静... 琳贺 Dev 框架 2026-03-17 13:48:22
问题在于你很可能配置了
base: '/docs/'。VitePress 的 base 会影响所有资源的路径,但 public 目录的文件在构建时会被直接复制到输出目录根目录,不受 base 影响。所以你写heroImage: '/logo.png',实际请求的是/docs/logo.png,但文件其实在/logo.png。几个解决办法:
方法一:去掉 base 配置(如果可以的话)
如果你的站点不是部署在子路径,就把 base 改成
'/',这样就正常了。方法二:用完整的绝对路径
直接写
heroImage: '/docs/logo.png',这样就匹配上你实际的请求路径了。方法三:把图片放到 .vitepress/public 目录下
这是更推荐的做法。VitePress 会自动处理这个目录下的资源路径,不用纠结 base 的问题。直接
heroImage: '/logo.png'就行,开发和构建都能正常工作。简单说就是你配置了 base 但 public 目录的文件路径没跟上,改成方法三最省心。