Skip to content

litingyes/vue-markdown

Repository files navigation

Logo Vue Markdown

The vue component for render Markdown string

What is this?

This is a Vue.js component focused on Markdown string rendering, which is based on mdast-util-to-vnode to parse Markdown string and render by Vue.js.

When should I use this?

  • Rendering Markdown strings with Vue.js
  • Streaming Markdown strings (usually in AI Chat)

Install

npm install vue-markdown-x 

Use

<script setup> import { ref } from 'vue' import { VueMarkdown } from 'vue-markdown-x'  const mdStr = ref('') </script> <template> <VueMarkdown :md="mdStr" /> </template>

VueMarkdown Props

md

Markdown string to render.

// default: '' type md = string

components

Customize how nodes are rendered.

type ComponentReturn = Component | [Component, Record<string, any> | undefined] // default: undefined type components = Partial<Record<Nodes['type'], ComponentReturn | ((node: Node) => ComponentReturn)>>

shiki

options of shiki for render code block.

interface shiki { // default: { light: catppuccinLatte, dark: catppuccinMocha } themes?: Record<string, ThemeRegistration> // default: [css,html,javascript,json,markdown,typescript,vue] langs?: LanguageRegistration[][] }

VueMarkdown Css Variables

:root { /* basic font-size, and heading's font-size is scaled based on this value. */ --vue-markdown-font-size: 16px; /* font-weight for heading */ --vue-markdown-heading-font-weight: 600; }