@storybook/mdx2-csf
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

@storybook/mdx2-csf

Storybook's mdx2-csf is a compiler that turns MDXv2 input into CSF output.

For example, the following input:

import { Meta, Story } from '@storybook/addon-docs';

<Meta title="atoms/Button" />

<Story name="Bar">
  <Button>hello</Button>
</Story>

Might be transformed into the following CSF (over-simplified):

export default {
  title: 'atoms/Button',
};

export const Bar = () => <Button>hello</Button>;

API

This library exports an async function to compile MDX, compile. It does not support a synchronous compiler because it uses asynchronous imports to bridge the ESM/CJS gap. The underlying MDXv2 libraries only support pure ESM, but this library is used in CJS environments.

compile

Asynchronously compile a string:

import { compile } from '@storybook/mdx2-csf';

const code = '# hello\n\nworld';
const output = await compile(code);

Loader

In addition, this library supports a simple Webpack loader that mirrors MDXv1's loader, but adds Webpack5 support. It doesn't use MDXv2's loader because it is prohibitively complex, and we want this to be interchangeable with the @storybook/mdx1-csf's loader which is also based on the MDXv1 loader.

The loader takes two options:

  • skipCsf don't generate CSF stories for the MDX file
  • mdxCompileOptions full options for the MDX compile function

For example, to add GFM support:

import remarkGfm from 'remark-gfm';

module.exports = {
  module: {
    rules: [
      {
        test: /\.(stories|story)\.mdx$/,
        use: [
          {
            loader: require.resolve('@storybook/mdx2-csf/loader'),
            options: {
              skipCsf: false,
              mdxCompileOptions: {
                remarkPlugins: [remarkGfm],
              },
            },
          },
        ],
      },
    ],
  },
};

Contributing

We welcome contributions to Storybook!

  • 📥 Pull requests and 🌟 Stars are always welcome.
  • Read our contributing guide to get started, or find us on Discord, we will take the time to guide you

License

MIT

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.1.01,622,392latest
1.1.0-next.14,131next
1.0.1--canary.43.bdc8283.014canary

Version History

VersionDownloads (Last 7 Days)Published
1.1.01,622,392
1.1.0-next.14,131
1.1.0-next.015
1.0.1--canary.43.bdc8283.014
1.0.1--canary.43.72621c5.014
1.0.0110,713
1.0.0-next.8228
1.0.0-next.7725
0.0.5-canary.38.8dab49f.00
1.0.0-next.61,041
0.0.5-canary.37.6aef72a.01
0.0.5-canary.4028385.00
1.0.0-next.52,536
0.0.44,549
1.0.0-next.4148
0.0.4-canary.87960b9.00
0.0.4-canary.5897107.00
1.0.0-next.311
0.0.4-canary.ab2d92c.00
1.0.0-next.2225
0.0.4-canary.32.e03c3aa.00
0.0.4-canary.503384f.00
1.0.0-next.10
0.0.4-canary.31.46da497.00
0.0.4-canary.31.7cd0a68.00
1.0.0-next.00
0.0.4-canary.30.c978d7f.00
0.1.0-next.8122
0.0.4-canary.28.4b5f9fe.00
0.1.0-next.713
0.0.4-canary.27.b47ca0a.00
0.0.4-canary.27.6b5fc58.00
0.0.4-canary.27.40bfda0.00
0.0.4-canary.27.61fd4a6.00
0.0.4-canary.27.3388881.00
0.1.0-next.667
0.1.0-next.522
0.0.4-canary.25.7adf785.00
0.0.4-canary.25.2de60c7.00
0.0.4-canary.3b5b158.00
0.1.0-next.49
0.0.4-canary.23.5394b4c.00
0.0.4-canary.2fe1578.00
0.1.0-next.32
0.0.4-canary.d64a8c0.00
0.1.0-next.21
0.0.4-canary.20.5648a54.00
0.0.4-canary.20.b3f2a2f.00
0.1.0-next.10
0.1.0-next.0156
0.0.4-canary.15.78a83b5.00
0.0.4-canary.14.04ffbe8.00
0.0.4-canary.21ac716.00
0.0.4-canary.7.37514ba.00
0.0.4-canary.6.7d622da.00
0.0.314,912
0.0.3-canary.f504c97.00
0.0.20
0.0.2-canary.facc4f7.00
0.0.11
0.0.1-canary.1.00947fc.00
0.0.1-canary.1.357011b.04
0.0.1-canary.1.838a6ca.00

Package Sidebar

Install

npm i @storybook/mdx2-csf

Weekly Downloads

1,762,052

Version

1.1.0

License

MIT

Unpacked Size

7.32 MB

Total Files

8

Last publish

Collaborators

  • domyen
  • kasperpeulen
  • valentinpalkovic
  • jreinhold
  • kylegach
  • ndelangen
  • shilman
  • tmeasday
  • ghengeveld
  • winkervsbecks
  • yannbf