Packages / @mdx-js/register
@mdx-js/register
Node hook to require MDX.
🪦 Legacy: This package is not recommended for use as it depends on deprecated Node features.
This package is a Node CommonJS hook to support MDX. require.extensions
is a deprecated feature in Node which lets projects “hijack” require
calls to do fancy things, in this case it let’s you require
MD(X) files.
This integration is useful if you’re using Node, for some reason have to use CJS, and want to require MDX files from the file system.
At this point in time, you’re better off with @mdx-js/node-loader
, even though it uses an experimental Node API.
This package is ESM only: Node 12+ is needed to use it.
npm:
npm install @mdx-js/register
yarn:
yarn add @mdx-js/register
Say we have an MDX document, example.mdx
:
export const Thing = () => <>World!</>
# Hello, <Thing />
…and our module example.cjs
looks as follows:
'use strict'
const React = require('react')
const {renderToStaticMarkup} = require('react-dom/server')
const Content = require('./example.mdx')
console.log(renderToStaticMarkup(React.createElement(Content)))
…then running that with:
node -r @mdx-js/register example.cjs
…yields:
<h1>Hello, World!</h1>
🪦 Legacy: This package is not recommended for use as it depends on deprecated Node features.
This package does not export anything. It changes Node’s internals.
To pass options, you can make your own hook, such as this my-hook.cjs
:
'use strict'
const register = require('@mdx-js/register/lib/index.cjs')
register({/* Options… */})
Which can then be used with node -r ./my-hook.cjs
.
The register hook uses evaluateSync
. That means import
(and export … from
) are not supported when requiring .mdx
files.
This package is not typed as TypeScript seems to not support .cjs
files yet.
See § Security on our website for information.
See § Contribute on our website for ways to get started. See § Support for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.