Skip to content

内置离线插件

MkDocs 是为数不多的支持构建可离线查看文档的框架之一,用户可以直接查看,无需服务器。通过离线插件,您可以将 site 目录 分发为可下载的 .zip 文件,同时保留大部分交互功能。

目标

工作原理

构建您的项目 后,切换到 site 目录 并在浏览器中打开 index.html —— 您现在正在从本地文件系统查看文档!大多数浏览器会在地址栏中显示 file:// 来表示这一点。然而,您会发现站点搜索功能消失了。

Material for MkDocs 提供了许多交互功能,其中一些由于现代浏览器的限制而无法从本地文件系统正常工作。更具体和技术性地说,所有对 Fetch API 的调用都会出现如下错误信息:

跨源请求仅支持协议方案:http,[…]

虽然浏览器出于安全原因施加了这些限制,但这减少了您项目的交互性。离线插件确保站点搜索继续工作,通过将搜索索引移动到 JavaScript 文件中,并利用 @squidfunkiframe-worker 补丁。

此外,该插件会自动禁用 use_directory_urls 设置,确保用户可以直接从本地文件系统打开您的文档。

存在一些 限制

何时使用

正如名称所示,插件仅应在您为离线分发 构建您的项目 时使用。值得注意的是,离线插件与以下其他插件兼容良好,有助于创建更好的离线文档:

  •   内置隐私插件


    隐私插件使得在构建离线使用时轻松使用外部资源,因为它会自动下载这些资源以便与您的文档一起分发。


    您的文档可以在没有互联网连接的情况下工作1

  •   内置优化插件


    优化插件会自动识别并优化您在项目中引用的所有媒体文件,使用压缩和转换技术。


    您的文档可以作为更小的 .zip 下载进行分发

配置

9.0.0 offline – built-in

与所有 内置插件 一样,使用离线插件非常简单。只需将以下行添加到 mkdocs.yml 中,然后开始构建可离线查看的文档:

plugins:
  - offline

离线插件内置于 Material for MkDocs 中,无需单独安装。

一般设置

以下设置可用:


enabled

9.0.0 true

使用此设置在 构建您的项目 时启用或禁用插件。如果您希望同时构建在线和离线可用的文档,使用 环境变量 是个好主意:

plugins:
  - offline:
      enabled: !ENV [OFFLINE, false]

限制

启用离线插件时,请确保禁用以下设置,因为它们使用 Fetch API,在从本地文件系统调用时会出错:


  1. 您可能会想知道为什么 隐私插件 在使用离线插件构建真正的离线文档时是必要的。虽然也可以为离线插件添加下载外部资源的支持,但此功能已在隐私插件中完全实现,并且是其存在的理由。

    Material for MkDocs 采用模块化的方法来构建其插件系统——许多插件可以完美协作,增强彼此的功能,使得通过几行配置解决复杂问题成为可能。