Skip to content

JoiePink/markdown-it-github-mention-card

Repository files navigation

markdown-it-github-mention-card

一个 markdown-it 插件:把 {@username} 渲染成 GitHub 用户链接,并在浏览器里鼠标悬停时显示用户信息卡片。

安装

pnpm add markdown-it-github-mention-card

使用

基础用法

import MarkdownIt from 'markdown-it'
import MarkdownItGitHubMentionCard, { initHoverCard } from 'markdown-it-github-mention-card'

const md = new MarkdownIt()
md.use(MarkdownItGitHubMentionCard, {
  // 可选:用于提高 GitHub API 速率限制(注意:在浏览器端暴露 Token 有风险)
  githubToken: 'YOUR_GITHUB_TOKEN',
})

const html = md.render('{@antfu}\n{@antfu|Anthony Fu}')
document.querySelector('#app')!.innerHTML = html
// 在浏览器端调用,使用插件初始化时设置的 token
initHoverCard()

SSR/SSG 场景(推荐)

在服务端渲染(SSR)或静态站点生成(SSG)场景下,由于构建时和浏览器端环境分离,建议在浏览器端调用 initHoverCard() 时传递 token:

// 服务端/构建时
import MarkdownIt from 'markdown-it'
import MarkdownItGitHubMentionCard from 'markdown-it-github-mention-card'

const md = new MarkdownIt()
md.use(MarkdownItGitHubMentionCard)
// 注意:SSR/SSG 场景下,不要在服务端传递 token(避免暴露)

const html = md.render('{@antfu}\n{@antfu|Anthony Fu}')
// 浏览器端(客户端)
import { initHoverCard } from 'markdown-it-github-mention-card'

// 在客户端调用时传递 token(从环境变量或配置中获取)
initHoverCard(process.env.NEXT_PUBLIC_GITHUB_TOKEN) // Next.js 示例
// 或
initHoverCard(import.meta.env.VITE_GITHUB_TOKEN) // Vite 示例

Token 优先级

initHoverCard(token?) 支持可选的 token 参数,优先级如下:

  1. 传入的 tokeninitHoverCard(token) 中的参数)- 最高优先级
  2. 插件初始化时的 tokenmd.use(plugin, { githubToken }) 中设置的)

这种设计允许你在不同场景下灵活使用:

  • 纯客户端场景:在插件初始化时设置 token,调用 initHoverCard() 即可
  • SSR/SSG 场景:不在服务端暴露 token,在客户端调用时传递 token

CommonJS(require)用法

构建产物同时包含 default 与具名导出,因此在 CommonJS 中需要通过 .default 取到默认导出:

const MarkdownIt = require('markdown-it')
const plugin = require('markdown-it-github-mention-card').default
const { initHoverCard } = require('markdown-it-github-mention-card')

const md = new MarkdownIt()
md.use(plugin, { githubToken: process.env.GITHUB_TOKEN })
// 渲染并插入 DOM 后,再调用 initHoverCard()

语法

  • {@username}:渲染为 https://github.com/username 链接,并标记为可悬停卡片
  • {@username|显示文本}:自定义链接文本
  • {@username|显示文本|链接}:自定义链接地址(仍会在符合 GitHub 用户链接时展示卡片)

选项

插件选项

  • githubToken?: string:GitHub Personal Access Token,用于请求 https://api.github.com/users/:username,可降低未登录请求的限流概率。

initHoverCard() 函数

function initHoverCard(token?: string): void
  • token?: string:可选的 GitHub Personal Access Token。如果提供,将优先使用此 token;否则使用插件初始化时设置的 token。

暗色模式支持

插件内置了暗色模式支持。当页面或父元素包含 .dark 类时,悬停卡片会自动切换到暗色主题:

<html class="dark">
  <!-- 或 -->
  <body class="dark">
    <!-- 内容 -->
  </body>
</html>

开发调试

pnpm install
pnpm dev:server

启动后打开 http://localhost:3000/dev.html,输入 token(可选),渲染后把鼠标移到 GitHub 用户链接上即可看到信息卡片。

开发页面功能:

  • ✅ 测试 token 在插件初始化时传入
  • ✅ 测试 token 在 initHoverCard(token) 时传入
  • ✅ 测试暗色模式切换
  • ✅ 实时预览渲染结果

License

MIT

About

一个 markdown-it 插件:把 {@username} 渲染成 GitHub 用户链接,并在浏览器里鼠标悬停时显示用户信息卡片

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors