@mdit-vue/plugin-component

A markdown-it plugin to allow vue components in markdown
5,900,143 221
Install
npm install @mdit-vue/plugin-component
Latest Version:3.0.2
License:MIT
Last Updated:May 8, 2026
Links: GitHub  ·  npm
Maintainer: meteorlxy

@mdit-vue/plugin-component

npm license

A markdown-it plugin to allow Vue components in markdown.

  • Treats vue built-in components and unknown HTML tags as vue components (markdown-it would treat them as inline tags by default).
  • Allows vue @ directive on native HTML tags.

Install

npm i @mdit-vue/plugin-component

Usage

This plugin will only take effects when the html option of markdown-it is enabled:

import { componentPlugin } from '@mdit-vue/plugin-component';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(componentPlugin, {
  // options
});

const rendered = md.render(
  `\
<!-- @ shorthand is supported -->
<Foo @click="onClick" />

<!-- multi-line syntax won't be wrapped with <p> -->
<Foo
  class="foo"
  :bar="bar"
/>
`,
);

Options

blockTags

  • Type: string[]

  • Default: []

  • Details:

    Extra tags to be treated as block tags.

    By default, all standard HTML inline elements will be treated as inline tags (excluding Vue built-in special elements). All unknown elements will be assumed as Vue components, and will be treated as block tags (with slight differences).

    In some cases (should be rare though) you might want to force some tags to behave like block tags, then you can use this option to specify the tag names.

    Notice that this option is case-sensitive, and has higher priority than the inlineTags option.

inlineTags

  • Type: string[]

  • Default: []

  • Details:

    Extra tags to be treated as inline tags.

    By default, only standard HTML inline elements will be treated as inline tags (excluding Vue built-in special elements). All unknown elements will be assumed as Vue components, and will be treated as block tags (with slight differences).

    Treating Vue components like block tags would work as expected in most cases. However, in some cases you might want to force some tags to behave like inline tags, then you can use this option to specify the tag names.

    Notice that this option is case-sensitive, and has lower priority than the blockTags option.

Related Packages

@mdit-vue/plugin-sfc

A markdown-it plugin to help transforming markdown to vue sfc

1,849,811 221
@mdit-vue/plugin-title

A markdown-it plugin to get markdown page title

1,813,201 221
@mdit-vue/plugin-frontmatter

A markdown-it plugin to get markdown frontmatter

6,154,261 221
@mdit-vue/plugin-toc

A markdown-it plugin to generate table-of-contents that compatible with Vue.js

1,830,077 221
@mdit-vue/plugin-headers

A markdown-it plugin to get markdown headers

1,790,609 221

Version History

Version Released License
3.0.2 MIT
3.0.1 MIT
3.0.0 MIT
2.1.4 MIT
2.1.3 MIT