跳到主要内容

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文件称为“局部内容(partial)”,并使用_前缀,以便此文件不会导致新页面的创建。

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 Front Matter覆盖。

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

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

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

其他更改

  • #9687:新的Vercel Analytics插件
  • #9681#9442docusaurus swizzlecreate-docusaurus 命令行工具现在会询问用户是否倾向于使用TypeScript
  • #9928:新增冰岛语翻译
  • #9931:新增allContentLoaded插件生命周期(实验性)

查看3.2.0更新日志条目以获取完整的更改列表。