/svelte-preprocess-markdown

Write Svelte components in markdown syntax

Primary LanguageHTMLMIT LicenseMIT

svelte-preprocess-markdown

Allows to import *.md files as Svelte component. Very useful when your components have a lot of formatted texts and you doesn't want to write it in HTML. It is based on superfast Marked markdown parser.

npm npm

Documentaton

  • Please, see the Docs for more info
  • Or try yourself in the our Playground

Installation

Install package:

npm i -D svelte-preprocess-markdown

Then, edit rollup.config.js file:

// 1. import package
const {markdown} = require('svelte-preprocess-markdown');

export default {
  // ...
  plugins: [
    svelte({
      // 2. add '.md', to the extensions  
      extensions: ['.svelte','.md'],
      // 3. add markdown preprocessor
      preprocess: markdown()
    })
  ]
}

Usage

Common usage

<script>
    import Child from './Child.svelte';
    let name = 'world';
</script>

# Hello {name}!

This is text in `markdown` **notation**

<Child />

<style>
    h1{
        color:red
    }
</style>

MDSv usage

The MDSv format is MDX-like way to write documents using imported Svelte-components.

import Block from './Block.svelte';
import { data } from './my_data.js';

# The MDSv example

You can use *components* and a *logic* inside doc:

<Block color="red">
  My `data` list:
  {#each data as item}
    {item}
  {/each}
</Block>

Options

You can pass any options that are accepted by Marked.

...
plugins: [
    svelte({
      ...
      preprocess: markdown({
          headerIds: false
      })
      ...
    })
  ]
...

Renderer

If you need renderer object for options, you can get it from the package:

const {Renderer} = require('svelte-preprocess-markdown');

const renderer = Renderer();

renderer.heading = function (text, level) {
    ...
};

const options = {renderer};