Skip to content

fix(theme): Linkcard 图标改为按域名命名的本地 SVG 自动发现 - #152

Merged
Dreamwxz merged 2 commits into
Mai-with-u:mainfrom
NovaOPCJ:fix/linkcard-platform-icons
Oct 26, 2026
Merged

Dreamwxz merged 2 commits into
Mai-with-u:mainfrom
NovaOPCJ:fix/linkcard-platform-icons

Conversation

@NovaOPCJ

@NovaOPCJ NovaOPCJ commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

变更说明

图标改为按域名命名、构建时自动发现,组件里不再维护平台图标映射。

问题背景

<Linkcard> 未指定 logo 时会用 https://${host}/favicon.ico 取目标站点图标:

  • discord.gg 的 favicon 会重定向到 discord.com 并返回 HTML,<img> 直接破图;
  • x.com、t.me 等站点在大陆网络受限或防盗链,请求经常失败;
  • 部分站点 favicon 只有 16×16,放大到 48×48 后模糊;
  • <img> 没有 error 兜底,加载失败会留下破图线框。

实现方式

  • 图标以域名命名,存放在 .vitepress/theme/icons/(github.com.svg、x.com.svg、discord.gg.svg、t.me.svg、bilibili.com.svg),组件用 import.meta.glob 在构建时自动发现,新增平台图标只需放入同名 SVG;
  • 未指定 logo 时按链接域名匹配本地图标:先精确匹配,再逐级去掉左侧子域回退主域名(www.x.com、space.bilibili.com 都能命中);
  • logo 仍可直接传图片地址并优先使用,也可以填域名指定某个本地图标;
  • 本地图标是 currentColor 内联 SVG,跟随深浅色主题,hover 过渡到品牌色;匹配不到本地图标时回退站点 favicon;
  • <img> 加载失败时隐藏图标容器,不再出现破图占位。

文档同步

  • zh/contributing/markdown-features.md、en/contributing/markdown-features.md:更新 logo 参数说明,补充新增图标的方式;
  • zh/about/about-docs.md、en/about/about-docs.md:同步组件行为描述。

验证

  • pnpm docs:build 通过(与 CI 一致);
  • node scripts/docs-quality.mjs 11 项门禁全部 0 违规;
  • 构建产物 about/community.html 与 en/about/community.html 各渲染 4 个本地图标,github.com / x.com / discord.gg / t.me 的 favicon 请求全部消失;显式指定 logo 的卡片仍走 <img>;
  • 本地预览核对 zh/en 交流群页在浅色与深色主题下的图标显示。

NovaOPCJ and others added 2 commits October 26, 2026 05:40
- 删除组件内置的平台图标映射,改为 import.meta.glob 构建时自动发现 .vitepress/theme/icons/*.svg
- 图标文件以域名命名(github.com.svg 等),子域名逐级回退主域名匹配
- 图片地址 logo 仍优先;未匹配到本地图标时回退站点 favicon,加载失败隐藏图标容器
- 同步 zh/en 的 markdown-features 与 about-docs 说明
@Dreamwxz Dreamwxz changed the title fix(theme): 修复 Linkcard 外部图标加载失败问题并内置常见平台矢量图标 fix(theme): Linkcard 图标改为按域名命名的本地 SVG 自动发现 Oct 26, 2026
@Dreamwxz
Dreamwxz merged commit 798830a into Mai-with-u:main Oct 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants