@mdx-js/register

Node hook to require MDX

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@mdx-js/register
16,684132.3.0a year ago2 years agoMinified + gzip package size for @mdx-js/register in KB

Readme

@mdx-js/register
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
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.extensionsrequire-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 evaluateSynceval-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.

License

MIT © Titus Wormerauthor