Wiki Vitepress

作者 microsoft354361d83247MIT收录于 2026年10月8日更新于 2026年10月8日

Packages generated wiki Markdown into a VitePress static site with dark theme, dark-mode Mermaid diagrams with click-to-zoom, and production build output. Use when the user wants to create a browsable website from generated wiki pages.

精选仅含说明Software Development
AI 生成的概览

将生成的 wiki Markdown 打包为深色主题的 VitePress 静态站点,并支持可缩放的 Mermaid 图表。

功能
该技能提供将生成的 wiki Markdown 页面转换为可浏览的 VitePress 静态站点的说明。它规定了脚手架目录结构、使用深色专属主题与 Mermaid 插件的 VitePress 配置、深色模式 Mermaid 图表的 CSS 与运行时修复、点击放大弹窗行为、Markdown 后处理规则以及生产构建命令。最终产物是位于 VitePress dist 输出目录中的已构建静态站点。
适用场景
当用户要求构建站点或将 wiki 页面打包为 VitePress、运行 /deep-wiki:build 命令,或希望从生成的 wiki 页面获得可浏览的 HTML 输出时使用。
运行要求
需要 Node.js 和 npm 来安装依赖并运行 VitePress 构建,还需要 vitepress-plugin-mermaid 包和 Vue。该技能不附带脚本,仅为说明文档,构建步骤需要网络访问以安装依赖包。

Wiki VitePress Packager

Transform generated wiki Markdown files into a polished VitePress static site with dark theme and interactive Mermaid diagrams.

When to Activate

  • User asks to "build a site" or "package as VitePress"
  • User runs the /deep-wiki:build command
  • User wants a browsable HTML output from generated wiki pages

VitePress Scaffolding

Generate the following structure in a wiki-site/ directory:

wiki-site/├── .vitepress/│   ├── config.mts│   └── theme/│       ├── index.ts│       └── custom.css├── public/├── [generated .md pages]├── package.json└── index.md

Config Requirements (config.mts)

  • Use withMermaid wrapper from vitepress-plugin-mermaid
  • Set appearance: 'dark' for dark-only theme
  • Configure themeConfig.nav and themeConfig.sidebar from the catalogue structure
  • Mermaid config must set dark theme variables:
typescript
mermaid: {  theme: 'dark',  themeVariables: {    primaryColor: '#1e3a5f',    primaryTextColor: '#e0e0e0',    primaryBorderColor: '#4a9eed',    lineColor: '#4a9eed',    secondaryColor: '#2d4a3e',    tertiaryColor: '#2d2d3d',    background: '#1a1a2e',    mainBkg: '#1e3a5f',    nodeBorder: '#4a9eed',    clusterBkg: '#16213e',    titleColor: '#e0e0e0',    edgeLabelBackground: '#1a1a2e'  }}

Dark-Mode Mermaid: Three-Layer Fix

Layer 1: Theme Variables (in config.mts)

Set via mermaid.themeVariables as shown above.

Layer 2: CSS Overrides (custom.css)

Target Mermaid SVG elements with !important:

css
.mermaid .node rect,.mermaid .node circle,.mermaid .node polygon { fill: #1e3a5f !important; stroke: #4a9eed !important; }.mermaid .edgeLabel { background-color: #1a1a2e !important; color: #e0e0e0 !important; }.mermaid text { fill: #e0e0e0 !important; }.mermaid .label { color: #e0e0e0 !important; }

Layer 3: Inline Style Replacement (theme/index.ts)

Mermaid inline style attributes override everything. Use onMounted + polling to replace them:

typescript
import { onMounted } from 'vue'
// In setup()onMounted(() => {  let attempts = 0  const fix = setInterval(() => {    document.querySelectorAll('.mermaid svg [style]').forEach(el => {      const s = (el as HTMLElement).style      if (s.fill && !s.fill.includes('#1e3a5f')) s.fill = '#1e3a5f'      if (s.stroke && !s.stroke.includes('#4a9eed')) s.stroke = '#4a9eed'      if (s.color) s.color = '#e0e0e0'    })    if (++attempts >= 20) clearInterval(fix)  }, 500)})

Use setup() with onMounted, NOT enhanceApp() — DOM doesn't exist during SSR.

Click-to-Zoom for Mermaid Diagrams

Wrap each .mermaid container in a clickable wrapper that opens a fullscreen modal:

typescript
document.querySelectorAll('.mermaid').forEach(el => {  el.style.cursor = 'zoom-in'  el.addEventListener('click', () => {    const modal = document.createElement('div')    modal.className = 'mermaid-zoom-modal'    modal.innerHTML = el.outerHTML    modal.addEventListener('click', () => modal.remove())    document.body.appendChild(modal)  })})

Modal CSS:

css
.mermaid-zoom-modal {  position: fixed; inset: 0;  background: rgba(0,0,0,0.9);  display: flex; align-items: center; justify-content: center;  z-index: 9999; cursor: zoom-out;}.mermaid-zoom-modal .mermaid { transform: scale(1.5); }

Post-Processing Rules

Before VitePress build, scan all .md files and fix:

  • Replace <br/> with <br> (Vue template compiler compatibility)
  • Wrap bare <T> generic parameters in backticks outside code fences
  • Ensure every page has YAML frontmatter with title and description

Build

bash
cd wiki-site && npm install && npm run docs:build

Output goes to wiki-site/.vitepress/dist/.

Known Gotchas

  • Mermaid renders async — SVGs don't exist when onMounted fires. Must poll.
  • isCustomElement compiler option for bare <T> causes worse crashes — do NOT use it
  • Node text in Mermaid uses inline style with highest specificity — CSS alone won't fix it
  • enhanceApp() runs during SSR where document doesn't exist — use setup() only

来源与署名

来源:microsoft/skills位于.github/plugins/deep-wiki/skills/wiki-vitepress提交354361d

许可证: MIT

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架