@jackgamesftw/marked-vue
v3.0.2-beta.1
Published
Render Markdown as Vue 3 components
Maintainers
Readme
marked-vue
Render Markdown as Vue 3 components using marked.
TL;DR
- Uses marked to parse markdown
- Renders actual Vue VNodes (no
v-html) - HTML in markdown is rendered as plain text
[Demo]
Installation
$ npm i marked-vueUsage (Vue 3)
import { createSSRApp, h } from 'vue';
import { renderToString } from '@vue/server-renderer';
import Markdown from 'marked-vue';
const app = createSSRApp({
render() {
return h(Markdown, { value: '# Hello world!' });
},
});
const html = await renderToString(app);Examples
- SSR:
node examples/ssr.mjs - SPA: serve the repo root and open
examples/spa/index.html
Component Props
- value[
string] - Markdown content. - baseURL [
string] - A prefix url for any relative link. - openLinksInNewTab [
boolean] - Attributetarget=_blankwill be added to link elements - langPrefix [
string] - A string to prefix the class/className in a<code>block. Defaults tolanguage-. - breaks [
boolean] - Addbrtag on single line breaks. Requiresgfmto betrue - gfm [
boolean] - Use approved Github Flavoured Markdown - isInline[
boolean] - Parse inline markdown.
Syntax highlight code blocks
Example: syntax highlight integration via langPrefix
import { h } from 'vue';
import Markdown, { VueRenderer } from 'marked-vue';
const renderer = new VueRenderer({
langPrefix: 'language-',
// override any method if needed
// code: (snippet, lang) => h('pre', [h('code', { class: `language-${lang}` }, snippet)]),
});
// <Markdown :value="markdown" :renderer="renderer" />Some awesome options available to highlight code
- [react-syntax-highlighter]
- [react-lowlight]
- [react-refractor]
