跳到主要内容

Docusaurus 3.2

· 阅读需 6 分钟
Sébastien Lorber
Docusaurus maintainer, This Week In React editor

我们很高兴地宣布 Docusaurus 3.2 发布。

升级应该很容易:正如我们的 发布流程文档 中所解释的那样,次要版本遵循 语义版本控制

Docusaurus 博客文章社交卡片

亮点

更快的构建速度

我们努力减少了在生产模式下构建 Docusaurus 网站所需的时间。

在 v3.1.0 和 v3.2.0 之间,进行了一些更改,导致许多网站的生产构建速度显著加快。

让我们来看一个例子。我们在 将 React Native 网站升级到 v3.2 的基准测试中报告了以下结果:

  • 🔥 冷构建:95 秒 ➡️ 66 秒(快约 30%)
  • 🔥 增量构建:55 秒 ➡️ 22 秒(快约 60%)

结果会因您网站的拓扑结构和启用的选项而异,但我们预计大型网站将看到最显著的改进。

请注意,这仅仅是个开始,Docusaurus 的性能仍然可以显著提高,特别是捆绑时间和内存消耗。跟踪我们的 性能问题 以了解即将推出的改进。

冷构建和增量构建有什么区别?

冷构建是指 Docusaurus 缓存为空时的情况,通常在运行 docusaurus clear 后发生。

增量构建是在您再次运行 docusaurus build 命令时发生的。Docusaurus 会自动尝试“重用”来自先前构建的计算结果,以加快后续构建速度。实际上,它是基于 Webpack 持久缓存 。要在您的 CI 服务器上启用增量构建,您可以跨构建保留 node_modules/.cache 文件夹。

更快的开发服务器

我们还致力于改进开发服务器的性能,以便您在编辑 Markdown/MDX 文件时获得更快的反馈。

我们最初实现内容重新加载的方式不太好。例如,编辑博客文章文件还会触发无关文档插件的无用重新加载。从现在开始,在编辑插件内容时,只有该插件会重新加载。很难精确衡量此更改的影响,但我估计编辑内容应该至少快 50% 🔥。

我们计划继续提高开发服务器的速度,使用更细粒度的热重载,确保我们不会运行总是会给出相同结果的无用计算。

MDX 部分目录

通过 #9684 ,Docusaurus 现在能够将来自导入的部分的标题渲染到目录中。

Docusaurus 和 MDX 允许您 将一个 Markdown 文件导入另一个文件 。我们通常将导入的 Markdown 文件称为“部分”,并使用 _ 前缀,以便此文件不会导致创建新页面。

myDoc.mdx
# 我的文档

## 文档标题

内容从另一个 MDX 文件导入:

import ImportedDoc from './\_importedDoc.mdx';

<ImportedDoc />
_myPartial.mdx
## 部分标题

一些段落

以前,“部分标题”标题不会出现在目录中,但现在会!

博客改进

我们使用几个新选项改进了博客插件,使其更强大和灵活:

  • #9912 :您现在可以显示博客文章的最后更新时间和作者,这是文档插件已经具备的功能。
  • #9886 :新的 processBlogPosts 选项允许您过滤/转换/排序博客文章。
  • #9838 :新的 pageBasePath 选项允许您自定义博客分页 URL 段(/blog/page/2

Sitemap lastmod

通过 #9954 ,站点地图插件现在有一个新的 lastmod 选项,它现在可以在 XML 上发出 <lastmod> 标签。该值默认情况下从 Git 历史记录中读取,但可以使用文档和博客 last_update 前端内容进行覆盖。

我们还使其能够选择不发出 <priority><frequency> 标签,这些标签通常会被爬虫忽略(特别是 Google )。

我们建议使用以下站点地图插件配置,这将在 Docusaurus V4 中成为默认配置:

{
lastmod: 'date',
priority: null,
changefreq: null,
}

其他更改

  • #9687 :新的 Vercel Analytics 插件
  • #9681#9442docusaurus swizzlecreate-docusaurus CLI 现在会询问用户是否更喜欢使用 TypeScript
  • #9928 :新的冰岛语翻译
  • #9928 :新的 allContentLoaded 插件生命周期(实验性)

查看 3.2.0 变更日志条目 以获取所有更改的详尽列表。