跳转到导航
1-2 分钟阅读
作者:Titus Wormer

从 v2 迁移到 v3

这次只有几个小的变更。 对于大多数人来说,只需要更新 Node.js 和插件即可!

目录

更新 Node.js

如果你还在使用旧版 Node,是时候更新了。 至少使用 Node 16。

更新插件

如果你使用 rehype 和 remark 插件:请更新。

大多数插件在版本之间仍然可以正常工作。 特别是如果你使用 TypeScript,类型中有一个破坏性的内部变更, 现在已得到支持。 解析器的工作方式也有一些小的内部变更,影响 remark-gfmremark-math

evaluaterun 传递 baseUrl

如果你使用 evaluaterun(或 outputFormat: 'function-body'),你应该 传递 baseUrl 选项。 通常设置为 import.meta.url

如果 MDX 内容使用 export 语句、import 表达式/语句或 import.meta.url,我们会编译为可工作的代码,但它需要知道 代码在哪里运行:你需要传递你所在的位置。

如果在 MDX 中使用这些功能而没有 baseUrl,将会收到运行时错误。

如果你之前传递了 useDynamicImport 选项,请移除它,该行为 现在是默认的。

TypeScript
import * as runtime from 'react/jsx-runtime'

const result = await run('# hi', {...runtime, baseUrl: import.meta.url})

使用自动 JSX 运行时

如果你使用 classic 运行时,请切换到 automatic 运行时。 Classic 仍然受支持,但如果你使用 classic JSX 运行时,现在会看到警告。

Classic 运行时在其他地方仍然可能很好,但在 MDX 中会导致潜在问题。 如果你指定了 jsxRuntime: 'classic'(以及 pragmapragmaFragpragmaImportSource),考虑切换到 automatic。 所有主要框架都支持 automatic 运行时。 对 classic 运行时的支持可能会在下一个主版本中移除。

useMDXComponents 替换 MDXContextwithMDXComponents

如果你使用已废弃的符号 MDXContextwithMDXComponents,请使用 useMDXComponents 代替。

提醒:你可能不需要基于上下文的 @mdx-js/react@mdx-js/preact 包。

@mdx-js/node-loader 替换 @mdx-js/register

如果你使用已废弃的包 @mdx-js/register,请使用 @mdx-js/node-loader 代替。

MDX 用 ❤️ 在阿姆斯特丹、博伊西和全球各地打造
本站不会跟踪你。
MIT © 2017-2026
项目在 GitHub
网站在 GitHub
更新订阅 RSS
赞助 OpenCollective