跳转到主要内容

将 Electron API 文档作为结构化数据

·阅读时长 4 分钟

今天,我们宣布对 Electron 的文档进行一些改进。每个新版本现在都包含一个 JSON 文件,其中详细描述了 Electron 的所有公共 API。我们创建此文件是为了让开发者能够以新颖有趣的方式使用 Electron 的 API 文档。


模式概览

每个 API 都是一个对象,具有 name、description、type 等属性。像 BrowserWindowMenu 这样的类具有描述其实例方法、实例属性、实例事件等的附加属性。

这是描述 BrowserWindow 类的模式摘录

{
name: 'BrowserWindow',
description: 'Create and control browser windows.',
process: {
main: true,
renderer: false
},
type: 'Class',
instanceName: 'win',
slug: 'browser-window',
websiteUrl: 'https://electron.js.cn/docs/api/browser-window',
repoUrl: 'https://github.com/electron/electron/blob/v1.4.0/docs/api/browser-window.md',
staticMethods: [...],
instanceMethods: [...],
instanceProperties: [...],
instanceEvents: [...]
}

以下是方法描述的示例,在本例中是 apis.BrowserWindow.instanceMethods.setMaximumSize 实例方法

{
name: 'setMaximumSize',
signature: '(width, height)',
description: 'Sets the maximum size of window to width and height.',
parameters: [{
name: 'width',
type: 'Integer'
}, {
name: 'height',
type: 'Integer'
}]
}

使用新数据

为了方便开发者在他们的项目中方便地使用这些结构化数据,我们创建了 electron-docs-api,这是一个小型 npm 包,每当有新的 Electron 版本发布时就会自动发布。

npm install electron-api-docs --save

为了快速体验,请在您的 Node.js REPL 中尝试使用该模块

npm i -g trymodule && trymodule electron-api-docs=apis

数据是如何收集的

Electron 的 API 文档遵循 Electron 编码风格Electron 风格指南,因此其内容可以被程序化解析。

electron-docs-linterelectron/electron 仓库的一个新的开发依赖项。它是一个命令行工具,可以对所有 markdown 文件进行 lint 并强制执行风格指南的规则。如果发现错误,它们将被列出,并且发布过程将被中止。如果 API 文档有效,则会创建 electron-json.api 文件,并作为 Electron 发布的一部分 上传到 GitHub

标准 JavaScript 和标准 Markdown

今年早些时候,Electron 的代码库已更新为在所有 JavaScript 中使用 standard linter。Standard 的 README 总结了选择此方法的原因:

采用标准风格意味着将代码清晰度和社区约定视为比个人风格更重要。这可能不适用于 100% 的项目和开发文化,但是开源项目对新手来说可能是一个充满敌意的地方。设定清晰、自动化的贡献者期望可以使项目更健康。

我们最近还创建了 standard-markdown 来验证我们文档中的所有 JavaScript 代码片段是否有效,并且与代码库本身中的风格一致。

这些工具共同帮助我们使用持续集成 (CI) 自动查找 pull request 中的错误。这减少了人工代码审查的负担,并增加了我们对文档准确性的信心。

社区的努力

Electron 的文档在不断改进,这都要归功于我们出色的开源社区。截至本文撰写之时,已有近 300 人为文档做出了贡献。

我们很高兴看到人们如何利用这些新的结构化数据。可能的用途包括: