Skip to content

VitePress Plugin Legend

npm

A comprehensive VitePress plugin that integrates Markmap, Mermaid, Infographic, and PlantUML preview, providing enhanced diagram support for Markdown documents.

✨ Features

  • 🗺️ Markmap Integration: Interactive preview of Markdown mind maps
  • 🏞️ Mermaid Integration: Interactive charts (flowcharts, sequence diagrams, etc.)
  • 📊 Infographic Integration: AntV infographic templates
  • 📐 PlantUML Integration: plantuml / puml fences via PlantUML Server
  • 🎨 Customizable: Both plugins support flexible configuration options
  • 🔧 Simple Setup: Single plugin installation with unified configuration
  • 📁 Component Support: Vue components for Markmap, Mermaid, Infographic, and PlantUML
  • 🚀 TypeScript: Full TypeScript support and type definitions

📦 Installation

bash
npm install vitepress-plugin-legend
# or
pnpm add vitepress-plugin-legend
# or
yarn add vitepress-plugin-legend

🚀 Quick Start

Step 1: Configure VitePress

Add the plugin to your VitePress configuration:

typescript
// .vitepress/config.ts
import { defineConfig } from 'vitepress';
import { vitepressPluginLegend } from 'vitepress-plugin-legend';

export default defineConfig({
  markdown: {
    config(md) {
      vitepressPluginLegend(md);
    },
  },
});

Step 2: Register Components

Register Vue components in your theme:

typescript
// .vitepress/theme/index.ts
import type { Theme } from 'vitepress';
import DefaultTheme from 'vitepress/theme';
import { initComponent } from 'vitepress-plugin-legend/component';
// Import CSS
import 'vitepress-plugin-legend/dist/index.css';

export default {
  extends: DefaultTheme,
  enhanceApp({ app }) {
    initComponent(app);
  },
} satisfies Theme;

Advanced Configuration

typescript
// .vitepress/config.ts
import { defineConfig } from 'vitepress';
import { vitepressPluginLegend } from 'vitepress-plugin-legend';

export default defineConfig({
  markdown: {
    config(md) {
      vitepressPluginLegend(md, {
        markmap: {
          showToolbar: true,
          // other markmap options
        },
        mermaid: true, // or false to disable
        infographic: { showToolbar: true },
        plantuml: {
          showToolbar: true,
        },
      });
    },
  },
});

Using Plugins Separately

If you prefer to use plugins separately:

typescript
// .vitepress/config.ts
import { defineConfig } from 'vitepress';
import {
  vitepressMarkmapPreview,
  vitepressMermaidPreview,
  vitepressInfographicPreview,
  vitepressPlantumlPreview,
} from 'vitepress-plugin-legend';

export default defineConfig({
  markdown: {
    config(md) {
      vitepressMarkmapPreview(md, { showToolbar: true });
      vitepressMermaidPreview(md);
      vitepressInfographicPreview(md);
      vitepressPlantumlPreview(md, { showToolbar: true });
    },
  },
});
typescript
// .vitepress/theme/index.ts
import type { Theme } from 'vitepress';
import DefaultTheme from 'vitepress/theme';
import {
  initMarkmapComponent,
  initMermaidComponent,
  initInfographicComponent,
  initPlantumlComponent,
} from 'vitepress-plugin-legend/component';
// Import CSS
import 'vitepress-plugin-legend/dist/index.css';

export default {
  extends: DefaultTheme,
  enhanceApp({ app }) {
    initMarkmapComponent(app);
    initMermaidComponent(app);
    initInfographicComponent(app);
    initPlantumlComponent(app);
  },
} satisfies Theme;

📖 Usage in Markdown

Markmap

Create mind maps from Markdown lists:

markdown
```markmap
# Root Node
## Branch 1
- Item 1
- Item 2
## Branch 2
- Item A
- Item B
```

<PreviewMarkmapPath path="./other.md" showToolbar />
<PreviewMarkmapPath />

Mermaid

Create various types of charts:

markdown
```mermaid
graph TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Action 1]
    B -->|No| D[Action 2]
```

<PreviewMermaidPath path="./other.mmd" />

Infographic

markdown
```infographic
infographic list-row-simple-horizontal-arrow
data
  title Example
  items
    - label Step 1
      desc Start
```

<PreviewInfographicPath path="./chart.igf" showToolbar />

PlantUML

Diagram source is sent to the official PlantUML Server (SVG output):

markdown
```plantuml
@startuml
Alice -> Bob: hello
@enduml
```

⚙️ Configuration Options

Markmap Options

typescript
interface VitepressMarkmapPreviewOptions {
  showToolbar?: boolean;
  // other markmap configuration options
}

Mermaid Options

typescript
interface VitepressMermaidPreviewOptions {
  showToolbar?: boolean;
}

Infographic Options

typescript
interface VitepressInfographicPreviewOptions {
  showToolbar?: boolean;
}

PlantUML Options

typescript
interface VitepressPlantumlPreviewOptions {
  showToolbar?: boolean; // defaults to true if omitted; use false to hide toolbar globally
}

Plugin Options

typescript
interface VitepressPluginLegendOptions {
  markmap?: VitepressMarkmapPreviewOptions | false;
  mermaid?: VitepressMermaidPreviewOptions | false;
  infographic?: VitepressInfographicPreviewOptions | false;
  plantuml?: VitepressPlantumlPreviewOptions | false;
}

📦 Sub-packages

This plugin integrates the following packages:

Package NameDescriptionVersion
vitepress-markmap-previewMarkdown mind map preview pluginnpm
vitepress-mermaid-previewMarkdown Mermaid chart preview pluginnpm
vitepress-infographic-previewAntV infographic preview pluginnpm
vitepress-plantuml-previewPlantUML / puml preview pluginnpm

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

MIT License


Made with ❤️ by flingyp