UNPKG

svelte-exmarkdown

Version:

Svelte component to render markdown. Dynamic and Extensible.

48 lines (33 loc) 1.51 kB
# svelte-exmarkdown [![CI](https://github.com/ssssota/svelte-exmarkdown/actions/workflows/ci.yml/badge.svg)](https://github.com/ssssota/svelte-exmarkdown/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/ssssota/svelte-exmarkdown/branch/main/graph/badge.svg?token=5I9YNJ57R3)](https://codecov.io/gh/ssssota/svelte-exmarkdown) [![License MIT](https://img.shields.io/npm/l/svelte-exmarkdown)](https://github.com/ssssota/svelte-exmarkdown/blob/main/LICENSE) Svelte component to render markdown. Dynamic and Extensible. ## Motivation [svelte-markdown](https://www.npmjs.com/package/svelte-markdown) is a good component package. However, it is not extensible. You cannot use custom syntax(e.g. KaTeX). [MDsveX](https://www.npmjs.com/package/mdsvex) is another good package. However, it is a preprocessor. Not suitable for dynamic rendering. We need **pluggable** and **dynamic** markdown renderer in svelte like [react-markdown](https://www.npmjs.com/package/react-markdown). ## Usage ```svelte <script> import Markdown from 'svelte-exmarkdown'; let md = $state('# Hello world!'); </script> <textarea bind:value={md}></textarea> <Markdown {md} /> ``` with GFM ```svelte <script> import Markdown from 'svelte-exmarkdown'; import { gfmPlugin } from 'svelte-exmarkdown/gfm'; let md = $state('# Hello world!'); const plugins = [gfmPlugin()]; </script> <textarea bind:value={md}></textarea> <Markdown {md} {plugins} /> ``` ## Playground & Documents https://ssssota.github.io/svelte-exmarkdown