Mermaid 图表

使用 Mermaid 语法在文档中渲染流程图、时序图、类图等可视化图表。

启用 Mermaid 支持

Mermaid 是可选功能,默认不启用。启用前需先安装依赖包,再在配置中开启。

安装依赖

pnpm add mermaid dompurify

开启配置

nuxt.config.ts
export default defineNuxtConfig({
  extends: ['@movk/nuxt-docs'],

  mermaid: {
    enabled: true
  }
})
未安装依赖直接启用时,模块会打印警告并跳过注册,mermaid 代码块将回退为普通代码块展示。

基础用法

使用 ```mermaid 代码块渲染图表。支持自动主题切换(深色/浅色模式)、懒加载、复制代码和全屏查看功能。

```mermaid
graph TD
    A[开始] --> B{是否有效?}
    B -->|是| C[处理数据]
    B -->|否| D[显示错误]
    C --> E[完成]
    D --> E
```

带文件名的图表

与代码块类似,可以在方括号中指定文件名,显示在图表顶部:

```mermaid [auth-flow.mmd]
sequenceDiagram
    participant U as 用户
    participant A as 认证服务
    ...
```

图表类型

流程图

使用 flowchartgraph 定义流程图。支持方向:TB(上到下)、LR(左到右)、BTRL

时序图

使用 sequenceDiagram 展示对象间的交互顺序:

类图

使用 classDiagram 展示类的结构和关系:

状态图

使用 stateDiagram-v2 展示状态机:

饼图

使用 pie 展示数据占比:

甘特图

使用 gantt 展示项目计划:

实体关系图

使用 erDiagram 展示数据库关系:

查看 Mermaid 官方文档了解更多图表类型和语法。

自定义样式

app/app.config.ts 中自定义 Mermaid 组件样式:

app/app.config.ts
export default defineAppConfig({
  ui: {
    prose: {
      mermaid: {
        slots: {
          root: 'border-2 border-primary rounded-lg',
          header: 'bg-primary/10',
          diagram: 'bg-muted/50 p-6',
          toolbar: 'top-3 right-3',
          loading: 'text-primary',
          error: 'bg-error/20'
        }
      }
    }
  }
})

API

Props

Prop Default Type
codestring

图表代码

iconany

图标

filenamestring

文件名

uiPartial<{ root: string; header: string; filename: string; icon: string; toolbar: string; diagram: string; loading: string; error: string; }>

Theme

app/app.config.ts
export default defineAppConfig({
  ui: {
    prose: {
      mermaid: {
        slots: {
          root: 'relative my-5 group border border-muted rounded-md overflow-hidden',
          header: 'flex items-center gap-1.5 border-b border-muted bg-default px-4 py-3',
          filename: 'text-default text-sm/6',
          icon: 'size-4 shrink-0',
          toolbar: 'absolute top-2 right-2 flex gap-1 z-10 opacity-0 group-hover:opacity-100 transition-opacity',
          diagram: 'p-4 flex justify-center bg-elevated overflow-x-auto',
          loading: 'p-4 flex items-center justify-center gap-2 text-sm text-muted',
          error: 'p-4 flex items-center justify-center gap-2 text-sm text-error bg-error/10'
        },
        variants: {
          fullscreen: {
            true: {
              root: 'fixed inset-0 z-50 m-0 rounded-none bg-default flex flex-col',
              diagram: 'flex-1 overflow-auto',
              toolbar: 'opacity-100'
            }
          },
          filename: {
            true: {
              root: ''
            }
          }
        }
      }
    }
  }
})

Changelog

33192 — fix: 优化 Mermaid 图表渲染可见性检测

7eca1 — perf: 优化 Mermaid 组件依赖和导入方式

0d6df — feat: 添加 Mermaid 图表渲染组件

Copyright © 2024 - 2026