用途:为站点生成并接入本地 favicon.svg,优先服务 VitePress/VuePress 文档站和 monorepo 内多个站点。
主要能力:
- 发现站点与配置:用 rg 查找 .vitepress/config.* 与 package.json,读取站点标题、包名、现有 public/favicon.svg 与 head 配置。
- 确定放置路径:按 VitePress 源目录定位 <vitepress-source-root>/public/favicon.svg,不默认 .vitepress/public;以构建产物和 config 的 srcDir/outDir 判断。
- 配置 head:写入 [["link", { rel: "icon", type: "image/svg+xml", href: "/favicon.svg" }]],已有 head 时只追加缺失条目。
- 设计风格:Iconify-first、Lucide 线性风格,透明背景、圆角端点、最多 2 色、无文字、无背景块,viewBox 0 0 32 32,stroke-width 约 2.4–3。
- 批量策略:先产出站点、路径、图标语义、主色映射表,再写 SVG、改 config、构建校验。
必要用法与示例:纯 Nitro v3 API 项目无 HTML head,将 favicon.svg 放项目根 public/favicon.svg,并新增 server/routes/favicon.ico.get.ts 做 302 回退:
import { defineHandler, redirect } from "nitro/h3";
export default defineHandler(() => redirect("/favicon.svg", 302));
不要在 Nitro v3 使用已弃用的 sendRedirect,应为该路由增加测试并检查 .output/public/favicon.svg。
验证:用 rg 检查配置与构建产物;VitePress 检查 public/favicon.svg、.vitepress/dist/favicon.svg 及 index.html 的 link;Nitro 检查 /favicon.ico 返回 302、/favicon.svg 返回 200 和 image/svg+xml;已部署站点可用 curl -I https://example.com/favicon.svg 等核对。
限制与注意:不要照搬复杂 Iconify 路径,需按 16px 简化加粗;不要给图标套深色圆底;不要只写 SVG 而不配置 head;不要擅自扩大站点范围;本地配置正确不代表线上生效,需排查部署、缓存或域名别名。视觉展示资料未提供具体工具要求,可按可用浏览器 MCP 或本地预览页处理。