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 從公開儲存庫中收錄這些內容。

檢舉或申請下架