@mdx-js/register
Node hook to require MDX.
🪦 Legacy: This package is not recommended for use as it depends on deprecated Node features.
Contents
What is this?
This package is a Node CommonJS hook to support MDX.require.extensions
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.When should I use this?
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.Install
This package is ESM onlyesm: Node 12+ is needed to use it.npm install @mdx-js/register
yarn add @mdx-js/register
Use
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>
API
🪦 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
eval-sync.
That means import
(and export … from
) are not supported when requiring
.mdx
files.Types
This package is not typed as TypeScript seems to not support.cjs
files
yet.Security
See § Securitysecurity on our website for information.Contribute
See § Contributecontribute on our website for ways to get started. See § Supportsupport for ways to get help.This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.