@mdx-js/node-loader
MDX 的 Node.js 钩子(也称为加载器)。
¥Node.js hooks (also knows as loaders) for MDX.
内容
¥Contents
¥Use
这是什么?
¥What is this?
此包包含 Node.js 钩子以添加对导入 MDX 文件的支持。节点自定义 Hooks 目前是候选版本。
¥This package contains Node.js hooks to add support for importing MDX files. Node Customization Hooks are currently a release candidate.
我什么时候应该使用这个?
¥When should I use this?
如果你使用 Node 并且想要从文件系统导入 MDX 文件,则此集成非常有用。
¥This integration is useful if you’re using Node and want to import MDX files from the file system.
如果你使用打包器(webpack、Rollup、esbuild)或打包器附带的站点构建器(Next.js)或构建系统(Vite),则可以使用其他集成:见 § 集成。
¥If you’re using a bundler (webpack, Rollup, esbuild), or a site builder (Next.js) or build system (Vite) which comes with a bundler, you can instead another integration: see § Integrations.
安装
¥Install
这个包是 仅限 ESM。在 Node.js(版本 16+)中,使用 npm 安装:
¥This package is ESM only. In Node.js (version 16+), install with npm:
npm install @mdx-js/node-loader
使用
¥Use
假设我们有一个 MDX 文档 example.mdx
:
¥Say we have an MDX document, example.mdx
:
export function Thing() {
return <>World!</>
}
# Hello, <Thing />
...我们的模块 example.js
如下所示:
¥…and our module example.js
looks as follows:
import {renderToStaticMarkup} from 'react-dom/server'
import React from 'react'
import Content from './example.mdx'
console.log(renderToStaticMarkup(React.createElement(Content)))
...然后运行:
¥…then running with:
node --loader=@mdx-js/node-loader example.js
…产量:
¥…yields:
<h1>Hello, World!</h1>
注意:如果你使用 Node 18 及更低版本,则可以忽略以下警告:
¥Note: if you use Node 18 and lower, then you can ignore the following warning:
(node:20718) ExperimentalWarning: Custom ESM Loaders is an experimental feature and might change at any > time (Use `node --trace-warnings ...` to show where the warning was created)
注意:如果你使用 Node 20 及更高版本,则会收到以下警告:
¥Note: if you use Node 20 and higher, then you get the following warning:
(node:20908) ExperimentalWarning: `--experimental-loader` may be removed in the future; instead use > `register()`: --import 'data:text/javascript,import { register } from "node:module"; import { pathToFileURL } from > "node:url"; register("%40mdx-js/node-loader", pathToFileURL("./"));'
你可以通过添加
register.js
文件来解决该问题:¥You can solve that by adding a
register.js
file:import {register} from 'node:module' register('@mdx-js/node-loader', import.meta.url)
…并运行
node --import ./register.js example.js
。¥…and running
node --import ./register.js example.js
instead.
API
该包导出标识符 createLoader
和 load
。没有默认导出。
¥This package export the identifiers createLoader
and load
. There is no default export.
createLoader(options?)
创建 Node.js 钩子来处理 Markdown 和 MDX。
¥Create Node.js hooks to handle markdown and MDX.
参数
¥Parameters
返回
¥Returns
Node.js 钩子 ({load}
)。
¥Node.js hooks ({load}
).
load
将 file:
URL 加载到 MD(X) 文件。
¥Load file:
URLs to MD(X) files.
请参阅 Node.js 文档中的 load
了解更多信息。
¥See load
in Node.js docs for more info.
Options
配置(TypeScript 类型)。
¥Configuration (TypeScript type).
选项与 CompileOptions
从 @mdx-js/mdx
相同,但 development
选项是否受支持取决于你是否使用 --conditions development
运行 Node。你无法手动传递它。
¥Options are the same as CompileOptions
from @mdx-js/mdx
exception that the development
option is supported based on whether you run Node with --conditions development
. You cannot pass it manually.
类型
¥Types
该包完全采用 TypeScript 类型。它导出附加类型 Options
。请参阅我们网站上的 § 类型 了解信息。
¥This package is fully typed with TypeScript. It exports the additional type Options
. See § Types on our website for information.
兼容性
¥Compatibility
由统一集体维护的项目与 Node.js 的维护版本兼容。
¥Projects maintained by the unified collective are compatible with maintained versions of Node.js.
当我们削减新的主要版本时,我们会放弃对未维护的 Node.js 版本的支持。这意味着我们尝试保持当前版本 @mdx-js/node-loader@^3
与 Node.js 16 兼容。
¥When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, @mdx-js/node-loader@^3
, compatible with Node.js 16.
安全
¥Security
请参阅我们网站上的 § 安全 了解信息。
¥See § Security on our website for information.
贡献
¥Contribute
请参阅我们网站上的 § 贡献 了解入门方法。请参阅 § 支持 了解获取帮助的方法。
¥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.
许可证
¥License