Compile Markdown to SolidJS component
npm install vite-plugin-solid-markdownbash
npm i vite-plugin-solid-markdown -D # yarn add vite-plugin-solid-markdown -D
`
Add it to vite.config.js
> ⚠️ Note: md() should be placed before solid()
`ts
// vite.config.js
import solid from 'solid-start/vite'
import { defineConfig } from 'vite'
import md from 'vite-plugin-solid-markdown'
export default defineConfig({
plugins: [
md(),
solid({
extensions: ['.mdx', '.md'],
}),
],
})
`
And import it as a normal Solid component
Import Markdown as Solid components
`jsx
import ReadMe from '../../README.md'
export default function Home() {
return (
)
}
`
Use Solid Components inside Markdown
You can even use Solid components inside your markdown, for example
`mdx
import Counter from '~/components/Counter'
`
Frontmatter
Frontmatter will be parsed and inject into Solid's instance data frontmatter field.
For example:
`md
export const name = 'My Cool App'
export const title = 'Hello ' + name + '!'
This is {name}
`
Will be rendered as
`html
This is My Cool App
`
It will also be passed to the wrapper component's props if you have set wrapperComponent option.
Options
`ts
// vite.config.js
import solidPlugin from 'solid-start/vite'
import { defineConfig } from 'vite'
import Markdown from 'vite-plugin-solid-markdown'
import remarkPrism from 'remark-prism'
export default defineConfig({
plugins: [
solidPlugin({
extensions: ['.mdx', '.md'],
}),
Markdown({
wrapperClasses: 'prose prose-sm m-auto text-left',
remarkPlugins: [remarkPrism],
// more options will be added in the future
}),
],
})
`
See the tsdoc for more advanced options.
See Rehype plugins for more rehype plugins.
See Remark plugins for more remark plugins.
Example
See the /example.
Or the pre-configured starter template Vitesse.
TypeScript Shim
`ts
declare module '*.md' {
import type { Component } from 'solid-js'
const Component: Component
export default Component
}
``