跳至主要内容

Docusaurus 3.2

·阅读 4 分钟
Sébastien Lorber
Docusaurus 维护者,《本周 React》编辑

我们很高兴地宣布推出 Docusaurus 3.2

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

Docusaurus blog post social card

亮点

更快的构建

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

在 v3.1.0 和 v3.2.0 之间,进行了多项更改,导致许多站点的生产构建速度显著提高。

让我们举个例子。我们在升级到 v3.2 的 React Native 网站上的基准测试报告了以下结果

  • 🔥 冷构建: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
# My Doc

## Doc heading

Content is imported from another MDX file:

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

<ImportedDoc />
_myPartial.mdx
## Partial heading

Some paragraph

以前,标题 Partial heading 不会出现在目录中,但现在会了!

博客改进

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

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

站点地图 lastmod

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

我们还使其能够选择不发出 <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 变更日志条目 以获取完整的更改列表。