升级到道格龙(Docusaurus)v3
本文档将帮助您将站点从道格龙(Docusaurus)v2 升级到道格龙(Docusaurus)v3。
道格龙(Docusaurus)v3 是一个新的主版本,包含破坏性变更,需要您相应地调整站点。我们将在此过程中为您提供指导,并提及一些可选的建议。
这不是完全重写,破坏性变更相对容易处理。最简单的站点最终只需更新 npm 依赖项即可升级。
主要的破坏性变更是从 MDX v1 升级到 MDX v3。阅读 MDX v2 和 MDX v3 发布说明了解详情。MDX 现在将更严格地编译您的 Markdown 内容,并存在细微差异。
升 级前,我们建议为道格龙(Docusaurus)v3 准备您的站点。有一些变更您已经可以在道格龙(Docusaurus)v2 下逐步处理。这样做将有助于减少最终升级到道格龙(Docusaurus)v3 所需的工作量。
对于复杂的站点,我们还建议设置视觉回归测试,这是确保站点视觉一致性的好方法。道格龙(Docusaurus)v3 主要升级依赖项,预计不会产生任何视觉变化。
查看 道格龙(Docusaurus)v3.0.0 的发布说明,并浏览拉取请求以获取额外有用信息和此处提到的每个变更背后的动机。
升级依赖项
升级到道格龙(Docusaurus)v3 需要升级核心道格龙(Docusaurus)依赖项(@docusaurus/name),还需要升级其他相关包。
道格龙(Docusaurus)v3 现在使用以下依赖项:
- Node.js v18.0+
- React v18.0+
- MDX v3.0+
- TypeScript v5.1+
- prism-react-renderer v2.0+
- react-live v4.0+
- remark-emoji v4.0+
- mermaid v10.4+
如果您的站点使用第三方社区插件和主题,您可能需要升级它们。
在尝试升级之前,请确保这些插件与道格龙(Docusaurus)v3 兼容。
典型的 package.json 依赖项升级示例:
{
"dependencies": {
// upgrade to Docusaurus v3
- "@docusaurus/core": "2.4.3",
- "@docusaurus/preset-classic": "2.4.3",
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/preset-classic": "3.0.0",
// upgrade to MDX v3
- "@mdx-js/react": "^1.6.22",
+ "@mdx-js/react": "^3.0.0",
// upgrade to prism-react-renderer v2.0+
- "prism-react-renderer": "^1.3.5",
+ "prism-react-renderer": "^2.1.0",
// upgrade to React v18.0+
- "react": "^17.0.2",
- "react-dom": "^17.0.2"
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
},
"devDependencies": {
// upgrade Docusaurus dev dependencies to v3
- "@docusaurus/module-type-aliases": "2.4.3",
- "@docusaurus/types": "2.4.3"
+ "@docusaurus/module-type-aliases": "3.0.0",
+ "@docusaurus/types": "3.0.0"
}
"engines": {
// require Node.js 18.0+
- "node": ">=16.14"
+ "node": ">=18.0"
}
}
对于 TypeScript 用户:
{
"devDependencies": {
// swap the external TypeScript config package for the new official one
- "@tsconfig/docusaurus": "^1.0.7",
+ "@docusaurus/tsconfig": "3.0.0",
// upgrade React types to v18.0+
- "@types/react": "^17.0.69",
+ "@types/react": "^18.2.29",
// upgrade TypeScript to v5.1+
- "typescript": "~4.7.4"
+ "typescript": "~5.2.2"
}
}
升级 MDX
MDX 是道格龙(Docusaurus)的主要依赖项,负责将您的 .md 和 .mdx 文件编译为 React 组件。
从 MDX v1 到 MDX v3 的过渡是采用道格龙(Docusaurus)v3 的主要挑战。大部分破坏性变更来自 MDX v2,而 MDX v3 是一个相对较小的发布。
在道格龙(Docusaurus)v2 下成功编译的某些文档现在可能在道格龙(Docusaurus)v3 下编译失败。
在您的站点上运行 npx docusaurus-mdx-checker 以获取现在在道格龙(Docusaurus)v3 下将编译失败的文件列表。
此命令也是估算使您的内容兼容所需工作量的好方法。请记住,大部分工作可以通过为道格龙(Docusaurus)v3 准备内容来提前执行。
其他文档也可能渲染不同。
对于手动审查所有页面很复杂的大型站点,我们建议您设置视觉回归测试。
升级 MDX 伴随着 MDX v2 和 MDX v3 发布博客文章中记录的所有破坏性变更。大部分破坏性变更来自 MDX v2,而 MDX v3 是一个相对较小的发布。MDX v2 迁移指南 有一个关于如何更新 MDX 文件的部分,这对我们特别相关。还要确保阅读 MDX 故障排除 页面,它可以帮助您解释常见的 MDX 错误消息。
还要确保阅读我们更新的 MDX 和 React 文档页面。
使用 MDX 游乐场
MDX 游乐场是您的新好朋友。它允许您了解您的内容如何编译为 React 组件,并独立地故障排除编译或渲染问题。
为道格龙(Docusaurus)配置 MDX 游乐场选项
要在 MDX 游乐场 上获得与道格龙(Docusaurus)v2 使用的编译行为类似,请打开这些选项:
- 使用
MDX - 使用
remark-gfm - 使用
remark-directive
并排使用两个 MDX 游乐场,您很快就会注意到某些内容的编译方式不同或在 v2 中编译失败。
目标将是重构您的问题内容,使其与两个版本的 MDX 都能很好地工作。这样,当您升级到道格龙(Docusaurus)v3 时,此内容已经可以开箱即用。