Electron API 文档作为结构化数据
今天我们宣布对 Electron 文档进行一些改进。 每个新版本现在都包含一个 JSON 文件,该文件详细描述了 Electron 的所有公共 API。 我们创建此文件是为了使开发人员能够以有趣的新方式使用 Electron 的 API 文档。
Schema 概述
每个 API 都是一个对象,包含名称、描述、类型等属性。 诸如 BrowserWindow
和 Menu
等类具有描述其实例方法、实例属性、实例事件等的额外属性。
以下是描述 BrowserWindow
类的 schema 摘录
{
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-linter 是 electron/electron
仓库的一个新的开发依赖项。 它是一个命令行工具,用于检查所有 markdown 文件并强制执行样式指南的规则。 如果发现错误,会列出错误并中止发布过程。 如果 API 文档有效,则会创建 electron-json.api
文件,并作为 Electron 发布的一部分上传到 GitHub。
Standard Javascript 和 Standard Markdown
今年早些时候,Electron 的代码库更新为所有 JavaScript 使用 standard
linter。 Standard 的 README 总结了做出此选择的原因
采用标准风格意味着将代码清晰度和社区惯例的重要性置于个人风格之上。 对于所有项目和开发文化来说,这可能并非 100% 合理,然而开源对于新手来说可能是一个不太友好的地方。 建立清晰、自动化的贡献者期望使项目更健康。
我们最近还创建了 standard-markdown 来验证文档中的所有 JavaScript 代码片段是否有效且与代码库本身的风格一致。
这些工具协同工作,帮助我们使用持续集成 (CI) 自动发现 pull request 中的错误。 这减轻了人工进行代码审查的负担,并使我们对文档的准确性更有信心。
社区努力成果
Electron 的文档在不断改进,我们为此要感谢我们出色的开源社区。 截至撰写本文时,已有近 300 人为文档做出了贡献。
我们很高兴看到人们如何利用这些新的结构化数据。 可能的用途包括:
- 对 https://electron.js.cn/docs/ 的改进
- 一个 TypeScript 定义文件,用于在使用 TypeScript 的项目中更简化地进行 Electron 开发。
- 针对 Dash.app 和 devdocs.io 等工具的可搜索离线文档