react-static-plugin-mdx

7.6.2 • Public • Published

react-static-plugin-mdx

A React-Static plugin that adds loader support for mdx

Installation

  • In an existing react-static site run:
$ yarn add react-static-plugin-mdx
  • Then add the plugin to your static.config.js:
export default {
  plugins: ["react-static-plugin-mdx"]
};
  • You can now use .md or .mdx files in your /pages directory and route components.

With Options

export default {
  plugins: [
    [
      "react-static-plugin-mdx",
      {
        includePaths: ["..."], // Additional include paths on top of the default jsLoader paths
        extensions: ['.md', '.mdx'] // NOTE: these are the default extensions
        mdxOptions: {
          remarkPlugins: [/* ... */],
          rehypePlugins: [/* ... */],
        },
        parseFrontMatter: false, // Extract front matter from markdown. Disabled by default.
      }
    ]
  ]
};

MDXProvider

You are likely to want to customize the components you want to use in MDX.

yarn add @mdx-js/react

and to use it you just need to add a provider somewhere in your tree:

import { MDXProvider } from '@mdx-js/react'
import { Root, Routes } from "react-static"
import { Router } from "@reach/router"
import React from "react"

const Wrapper = ({children}) => <main style={{ padding: '20px'}} children={children} />
const H1 = ({children}) => <h1 style={{ padding: '1rem', background: 'linear-gradient(to right, #1565C0, #b92b27)' }} children={children} />


function App() {
  return (
    <Root>
      <React.Suspense fallback={<em>Loading...</em>}>
        <MDXProvider components={{ wrapper: Wrapper, h1: H1 }}>
          <Router>
            <Routes path="*" />
          </Router>
        </MDXProvider>
      </React.Suspense>
    </Root>
  )
}

Typescript typings: https://github.com/mdx-js/mdx/issues/616

Frontmatter

With parseFrontMatter enabled, if you have a markdown file like

---
title: Awesome!
---
# About page

Then you can write a React component like

import about, { frontMatter } from 'path/to/about.md';
console.log(frontMatter); // Will output { title: 'Awesome!' }

export default about; // A React component for (<h1>About page</h1>)

Readme

Keywords

none

Package Sidebar

Install

npm i react-static-plugin-mdx

Weekly Downloads

59

Version

7.6.2

License

MIT

Unpacked Size

8.19 kB

Total Files

7

Last publish

Collaborators

  • tannerlinsley
  • sleeplessbyte