本周,我们在 electronjs.org 上为 Electron 的文档提供了一个归宿。您可以访问 /docs/latest 以获取最新的文档集。我们也将保留旧版本的文档,因此您可以访问 /docs/vX.XX.X 以获取与您正在使用的版本相对应的文档。
您可以访问 /docs 以查看可用的版本,或访问 /docs/all 以在一个页面上查看最新版本的文档(对于 cmd
+ f
搜索很方便)。
如果您想为文档内容做出贡献,您可以在 Electron 存储库 中执行此操作,文档从这里获取。我们为每个小版本获取它们并将它们添加到 Electron 网站存储库 中,该存储库使用 Jekyll 创建。
如果您有兴趣了解有关我们如何将文档从一个存储库拉取到另一个存储库的更多信息,请继续阅读。否则,请享受 文档!
技术细节
我们保留 Electron 核心存储库中的文档原样。这意味着 electron/electron 将始终包含最新版本的文档。当发布 Electron 的新版本时,我们会将它们复制到 Electron 网站存储库 electron/electronjs.org 上。
script/docs
为了获取文档,我们运行一个带有命令行界面的 脚本,该界面为 script/docs vX.XX.X
,带或不带 --latest
选项(取决于您导入的版本是否是最新版本)。我们 用于获取文档的脚本 使用了一些有趣的 Node 模块
测试 帮助我们知道所有部分都按预期到达。
Jekyll
Electron 网站是一个 Jekyll 网站,我们利用了文档的 集合 功能,其结构如下所示
electron.atom.io
└── _docs
├── latest
├── v0.27.0
├── v0.26.0
├── so on
└── so forth
前置 matter
为了使 Jekyll 呈现每个页面,它至少需要一个空的前置 matter。我们将在所有页面上使用前置 matter,因此当我们流式输出 /docs
目录时,我们会检查文件是否为 README.md
文件(在这种情况下,它将接收一个前置 matter 配置)或者它是否为任何其他具有 markdown 扩展名的文件(在这种情况下,它将接收略微不同的前置 matter)。
每个页面都接收此一组前置 matter 变量
---
version: v0.27.0
category: Tutorial
title: 'Quick Start'
source_url: 'https://github.com/electron/electron/blob/master/docs/tutorial/quick-start.md'
---
README.md
获取一个额外的 permalink
,以便它的 URL 具有 index.html
的公共根,而不是笨拙的 /readme/
。
permalink: /docs/v0.27.0/index.html
配置和重定向
在站点的_config.yml
文件中,每次使用--latest
标志获取文档时,都会设置一个变量latest_version
。我们还会添加已添加到站点的所有版本的列表,以及我们希望用于整个文档集合的永久链接。
latest_version: v0.27.0
available_versions:
- v0.27.0
collections:
docs: { output: true, permalink: '/docs/:path/' }
站点根目录中的latest.md
文件除了此前端内容外为空,此前端内容允许用户通过访问此 URL 查看最新版本文档的索引(即README
),electron.atom.io/docs/latest,而不是专门使用最新版本号(尽管您也可以这样做)。
---
permalink: /docs/latest/
redirect_to: /docs/{{ site.data.releases[0].version }}
---
在docs.html
布局模板中,我们使用条件语句来显示或隐藏标题和面包屑中的信息。
{% raw %} {% if page.category != 'ignore' %}
<h6 class="docs-breadcrumb">
{{ page.version }} / {{ page.category }} {% if page.title != 'README' %} / {{
page.title }} {% endif %}
</h6>
{% endif %} {% endraw %}
要创建一个显示可用版本的页面,我们只需在站点根目录中的文件versions.md
上循环遍历配置文件中的列表。此外,我们还为此页面提供了一个永久链接:/docs/
{% raw %} {% for version in site.available_versions %} - [{{ version
}}](/docs/{{ version }}) {% endfor %} {% endraw %}
希望您喜欢这些技术要点!如果您有兴趣了解有关使用 Jekyll 创建文档站点的更多信息,请查看 GitHub 的文档团队如何发布GitHub 上的 Jekyll 文档。