本周,我们将 Electron 的文档放在了 electronjs.org。你可以访问 /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 网站,我们利用了 集合 (Collections) 功能来组织文档,结构如下:
electron.atom.io
└── _docs
├── latest
├── v0.27.0
├── v0.26.0
├── so on
└── so forth
Front matter
Jekyll 要渲染每个页面,至少需要空的 front matter。我们将在所有页面上使用 front matter,所以在流式传输 `/docs` 目录时,我们检查文件是否为 `README.md` 文件(在这种情况下它会获得一种 front matter 配置),或者是否为任何其他具有 markdown 扩展名的文件(在这种情况下它会获得稍微不同的 front matter)。
每个页面都接收以下 front 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
。我们还添加了已添加到网站的所有版本的列表,以及我们希望整个文档集合使用的 permalink。
latest_version: v0.27.0
available_versions:
- v0.27.0
collections:
docs: { output: true, permalink: '/docs/:path/' }
我们网站根目录中的 latest.md
文件除了这个 front matter 外是空的,这允许用户通过访问 electron.atom.io/docs/latest 这个 URL 来查看最新版本文档的索引(即 README
),而不是必须指定最新的版本号(尽管你也可以这样做)。
---
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 上发布 GitHub 文档。