跳转到主要内容

9 篇标记为“生态系统”的文章

'关于 Electron 包生态系统的博文'

查看所有标签

将我们的生态系统迁移到 Node 22

·阅读时间 2 分钟

2025 年初,Electron 的 npm 生态系统仓库(在 @electron/@electron-forge/ 命名空间下)将把 Node.js 22 作为最低支持版本。


这意味着什么?

过去,Electron npm 生态系统中的包(Forge、Packager 等)会尽可能长时间地支持 Node 版本,即使某个版本已达到其生命周期结束 (EOL) 日期。这样做是为了确保我们不会碎片化生态系统——我们知道许多项目依赖于旧版本的 Node,除非有紧迫的升级理由,否则我们不想冒让这些项目陷入困境的风险。

随着时间的推移,将 Node.js 14 作为我们的最低版本变得越来越困难,原因有以下几点:

  • 缺乏官方的 Node.js 14 macOS ARM64 构建版本,这要求我们维护 CI 基础设施的变通方案以提供完整的测试覆盖。
  • 上游包依赖项的 engines 要求已经提高,这使得通过依赖项升级来解决供应链安全问题变得越来越困难。

此外,较新版本的 Node.js 包含了许多我们希望利用的改进,例如运行时原生的通用工具(例如 fs.globutil.parseArgs)以及全新的自带模块(例如 node:testnode:sqlite)。

为何现在升级?

2024 年 7 月,Electron 生态系统工作组决定在未来某个版本达到 LTS 日期后,将所有包升级到支持同步 ESM 图的 require() 的最早 Node 版本(参见 nodejs/node#51977nodejs/node#53500)。

我们决定将该更新时间定为 2025 年 1 月/2 月。此次升级后,Node 22 将成为现有生态系统包中支持的最低版本。

我需要采取什么行动?

我们将尽力保持兼容性。但是,为了确保获得最佳支持,我们鼓励您将应用升级到 Node 22 或更高版本。

请注意,您项目中运行的 Node 版本与您当前 Electron 版本中嵌入的 Node 版本无关。

下一步

如果您有任何问题或疑虑,请随时发送邮件至 info@electronjs.org 与我们联系。您也可以在我们的官方 Electron Discord 中获得社区支持。

2023 年生态系统回顾

·6 分钟阅读

回顾 2023 年 Electron 开发者生态系统的改进和变化。


在过去的几个月里,我们一直在 Electron 生态系统中酝酿一些变化,以增强 Electron 应用程序的开发者体验!以下是来自 Electron 总部的最新补充内容的快速概要。

Electron Forge 7 及未来版本

Electron Forge 7——我们用于打包和分发 Electron 应用程序的一体化工具的最新主版本——现已发布。

虽然 Forge 6 是对 v5 的完全重写,但 v7 的范围更小,但仍包含一些破坏性变更。未来,我们将继续在需要进行破坏性变更时发布 Forge 的主版本。

更多详情,请查看 GitHub 上的完整 Forge v7.0.0 更新日志

破坏性变更

  • 切换到使用 notarytool 进行 macOS 公证: 自 2023-11-01 起,Apple 停用了用于 macOS 公证的旧版 altool,此版本将其从 Electron Forge 中完全移除。
  • 最低 Node.js 版本提升至 v16.4.0: 在此版本中,我们将最低要求的 Node.js 版本设置为 16.4.0。
  • 停止支持 electron-prebuiltelectron-prebuilt-compileelectron-prebuilt 是 Electron npm 模块的原始名称,但在 v1.3.1 中被 electron 取代。electron-prebuilt-compile 是该二进制文件的替代方案,具有增强的 DX 功能,但最终被废弃为一个项目。

亮点

  • Google Cloud Storage 发布者作为我们为更好地支持静态自动更新所做的努力的一部分,Electron Forge 现在支持直接发布到 Google Cloud Storage!
  • ESM forge.config.js 支持Electron Forge 现在支持 ESM forge.config.js 文件。(附注:敬请期待 Electron 28 中的 ESM 入口点支持。)
  • Makers 现在并行运行在 Electron Forge 6 中,Makers 出于 ✨ 遗留 ✨ 原因按顺序运行。此后,我们已经测试了 Make 步骤的并行化,没有产生不利影响,因此在为同一平台构建多个目标时,您应该会看到速度提升!
感谢!

🙇 非常感谢 mahnunchik 为 GCS 发布器和 Forge 配置中 ESM 支持所做的贡献!

更好的静态存储自动更新

Squirrel.Windows 和 Squirrel.Mac 是支持 Electron 内置 autoUpdater 模块的平台特定更新技术。这两个项目都通过两种方法支持自动更新

  • 一个兼容 Squirrel 的更新服务器
  • 一个托管在静态存储提供商(例如 AWS、Google Cloud Platform、Microsoft Azure 等)上的清单 URL

传统上,更新服务器方法一直是 Electron 应用程序的推荐方法(并提供更新逻辑的额外自定义),但它有一个主要缺点——如果应用程序是闭源的,它需要应用程序维护自己的服务器实例。

另一方面,静态存储方法一直都是可行的,但在 Electron 内部没有文档记录,并且在 Electron 的工具包中支持不佳。

@MarshallOfSound 的出色工作下,无服务器自动应用更新的流程得到了极大的简化

  • Electron Forge 的 Zip 和 Squirrel.Windows maker 现在可以配置为输出与 autoUpdater 兼容的更新清单。
  • update-electron-app 的新主版本(v2.0.0)现在可以读取这些生成的清单,作为 update.electronjs.org 服务器的替代方案。

一旦你的 Makers 和 Publishers 配置为将更新清单上传到云文件存储,你只需几行配置即可启用自动更新

const { updateElectronApp, UpdateSourceType } = require('update-electron-app');

updateElectronApp({
updateSource: {
type: UpdateSourceType.StaticStorage,
baseUrl: `https://my-manifest.url/${process.platform}/${process.arch}`,
},
});
延伸阅读

📦 想了解更多?有关详细指南,请参阅 Forge 的自动更新文档

@electron/ 扩展宇宙

当 Electron 最初推出时,社区发布了许多用于增强 Electron 应用程序的开发、打包和分发体验的软件包。随着时间的推移,其中许多软件包被整合到 Electron 的 GitHub 组织中,核心团队承担了维护负担。

2022 年,我们开始将所有这些第一方工具统一在 npm 上的 @electron/ 命名空间下。此更改意味着以前是 electron-foo 的软件包现在在 npm 上是 @electron/foo,以前命名为 electron/electron-foo 的存储库现在在 GitHub 上是 electron/foo。这些更改有助于清晰地区分第一方项目和用户项目。这包括许多常用的软件包,例如

  • @electron/asar
  • @electron/fuses
  • @electron/get
  • @electron/notarize
  • @electron/osx-sign
  • @electron/packager
  • @electron/rebuild
  • @electron/remote
  • @electron/symbolicate-mac
  • @electron/universal

未来,我们发布的所有第一方包也将在 @electron/ 命名空间下。此规则有两个例外

  • Electron 核心将继续在 electron 包下发布。
  • Electron Forge 将继续将其所有 monorepo 包发布在 @electron-forge/ 命名空间下。
寻找星标

⭐ 在此过程中,我们还意外地将 electron/packager 存储库设为私有,这带来了不幸的副作用,即抹去了我们的 GitHub 星标计数(抹去前超过 9000)。如果您是 Packager 的活跃用户,我们将非常感谢您 ⭐ 点赞 ⭐!

介绍 @electron/windows-sign

从 2023-06-01 开始,行业标准开始要求将 Windows 代码签名证书的密钥存储在符合 FIPS 标准的硬件上。

实际上,这意味着对于在 CI 环境中构建和签名的应用程序来说,代码签名变得更加困难,因为许多 Electron 工具将证书文件和密码作为配置参数,并尝试使用硬编码逻辑进行签名。

这种情况一直是 Electron 开发者的一个常见痛点,这就是为什么我们一直在努力开发一个更好的解决方案,将 Windows 代码签名隔离成一个独立的步骤,类似于 @electron/osx-sign 在 macOS 上的做法。

未来,我们计划将此软件包完全集成到 Electron Forge 工具链中,但目前它独立存在。该软件包目前可以通过 npm install --save-dev @electron/windows-sign 进行安装,并且可以以编程方式或通过 CLI 使用。

请试用它,并在仓库的问题跟踪器中给我们反馈!

下一步是什么?

下个月我们将进入我们年度的十二月静默期。在此期间,我们将思考如何在 2024 年让 Electron 的开发体验变得更好。

你希望我们接下来做些什么吗?告诉我们吧!

Electron Forge 6 介绍

·6 分钟阅读

我们很高兴地宣布 Electron Forge v6.0.0 现已发布!这是 Forge 自 2018 年以来的第一个主要版本,并将项目从 electron-userland 迁移到 Github 上的主要 electron 组织。

请继续阅读,了解有哪些新功能以及您的应用程序如何采用 Electron Forge!

什么是 Electron Forge?

Electron Forge 是一个用于打包和分发 Electron 应用程序的工具。它将 Electron 的构建工具生态系统统一到一个可扩展的接口中,让任何人都可以直接上手制作 Electron 应用程序。

主要功能包括

  • 📦 应用程序打包和代码签名
  • 🚚 在 Windows、macOS 和 Linux 上的可定制安装程序(DMG、deb、MSI、PKG、AppX 等)
  • ☁️ 针对云提供商(GitHub、S3、Bitbucket 等)的自动化发布流程
  • ⚡️ 易于使用的 webpack 和 TypeScript 模板
  • ⚙️ 支持原生 Node.js 模块
  • 🔌 可扩展的 JavaScript 插件 API
延伸阅读

访问 为什么选择 Electron Forge 说明文档,了解更多关于 Forge 的理念和架构。

v6 有哪些新功能?

完全重写

从 v1 到 v5,Electron Forge 都基于现已停止维护的 electron-compile 项目。Forge 6 是该项目的完全重写,采用了新的模块化架构,可以扩展以满足任何 Electron 应用程序的需求。

在过去几年中,Forge v6.0.0-beta 已经实现了与 v5 的功能对等,并且代码变动已大幅减缓,使得该工具已准备好被广泛采用。

不要安装错误的软件包

对于版本 5 及以下,Electron Forge 发布在 npm 上的 electron-forge 包中。从 v6 重写开始,Forge 被构造成一个包含许多小型项目的 monorepo 项目。

官方支持

过去,Electron 的维护者对构建工具没有明确的立场,将这项任务留给了各种社区软件包。然而,随着 Electron 项目的成熟,新的 Electron 开发者越来越难以理解他们需要哪些工具来构建和分发他们的应用程序。

为了帮助 Electron 开发者在分发过程中得到指导,我们决定将 Forge 作为 Electron 官方的、功能完备的构建流程

在过去一年中,我们一直在将 Forge 逐步整合到官方 Electron 文档中,并且最近已将 Forge 从其旧地址 electron-userland/electron-forge 迁移到 electron/forge 仓库。现在,我们终于准备好向公众发布 Electron Forge 了!

入门

初始化一个新的 Forge 项目

可以使用 create-electron-app CLI 脚本来搭建一个新的 Electron Forge 项目。

yarn create electron-app my-app --template=webpack
cd my-app
yarn start

该脚本将在 my-app 文件夹中创建一个 Electron 项目,其中包含完整的 JavaScript 打包和预配置的构建流程。

更多信息,请参阅 Forge 文档中的入门指南

一流的 webpack 支持

上述代码片段使用了 Forge 的 Webpack 模板,我们建议将其作为新 Electron 项目的起点。此模板围绕 @electron-forge/plugin-webpack 插件构建,该插件以多种方式将 webpack 与 Electron Forge 集成,包括

  • 通过 webpack-dev-server 增强本地开发流程,包括支持渲染器中的 HMR;
  • 在应用程序打包前处理 webpack 包的构建逻辑;以及
  • 在 webpack 打包过程中增加对原生 Node 模块的支持。

如果您需要 TypeScript 支持,可以考虑使用 Webpack + TypeScript 模板

导入现有项目

Electron Forge CLI 还包含一个用于现有 Electron 项目的导入命令。

cd my-app
yarn add --dev @electron-forge/cli
yarn electron-forge import

当你使用 import 命令时,Electron Forge 将添加一些核心依赖项并创建一个新的 forge.config.js 配置。如果你有任何现有的构建工具(例如 Electron Packager、Electron Builder 或 Forge 5),它将尝试尽可能多地迁移设置。你的一些现有配置可能需要手动迁移。

手动迁移的详细信息可以在 Forge 的 导入文档 中找到。如果你需要帮助,请访问 我们的 Discord 服务器

为什么要切换到 Forge?

如果您已经有用于打包和发布 Electron 应用程序的工具,采用 Electron Forge 所带来的好处仍然可能超过初始的转换成本。

我们认为使用 Forge 有两大好处

  1. Forge 在 Electron 支持新功能后,会立即获得这些功能以用于应用程序构建。在这种情况下,你无需自己连接新的工具支持,也无需等待其他软件包最终实现该支持后再升级。最近的示例包括 macOS 通用二进制文件ASAR 完整性检查

  2. Forge 的多软件包架构使其易于理解和扩展。由于 Forge 由许多职责明确的小型软件包组成,因此更容易理解代码流程。此外,Forge 的可扩展 API 设计意味着你可以编写自己的附加构建逻辑,与提供的配置选项分开,以用于高级用例。有关编写自定义 Forge 插件、创建器和发布器的更多详细信息,请参阅文档的 扩展 Electron Forge 部分。

破坏性变更

Forge 6 已经经历了很长的测试阶段,其发布节奏也逐渐放缓。然而,我们在 2022 年下半年加快了开发速度,并利用最后几个版本推出了 v6.0.0 稳定版之前的一些最终破坏性更改。

如果你是 Electron Forge 6 Beta 用户,请参阅 v6.0.0 GitHub 发布说明,了解最近 Beta 版(>=6.0.0-beta.65)中进行的破坏性更改列表。

完整的更改和提交列表可以在仓库的 CHANGELOG.md 中找到。

提交您的反馈!

告诉我们您的需求!Electron Forge 团队一直致力于改进项目,以更好地满足用户的需求。

你可以通过提交功能请求、发布 问题,或者只是告诉我们你的反馈来帮助我们改进 Electron Forge!你还可以加入 官方 Electron Discord 服务器,其中有一个专门用于 Electron Forge 讨论的频道。

如果你想对 https://electronforge.cn 上的 Forge 文档提供任何反馈,我们有一个 GitBook 实例,它已同步到 electron-forge/electron-forge-docs 仓库。

Spectron 弃用通知

·阅读时间 2 分钟

Spectron 将于2022年2月1日被弃用。


从2022年2月开始,Spectron 将被 Electron 团队正式弃用

为什么要弃用 Spectron?

Spectron 尽管一直为每个新版本的 Electron 发布新版本,但该项目已有一年多未得到任何维护和改进,目前也没有全职维护者。随着 remote 模块在 Electron 14 中从 Electron 核心移至外部模块,Spectron 将需要进行大规模重写才能继续可靠运行。

在审查了 Spectron 持续维护的几个可用选项后,Electron 团队决定在 2022 年弃用 Spectron。

弃用时间线

以下是我们计划的弃用时间表

  • 2021年11月 - 2022年1月:Electron 团队将继续接受来自社区的拉取请求。
  • 2022年1月:将发布最终版本的公告,警告 Spectron 的弃用。
  • 2022年2月1日:Spectron 的仓库将被标记为“存档”。 不再接受拉取请求。

2022 年 2 月 1 日之后,Electron 将无限期保留 Spectron 仓库,欢迎其他人为他们的项目 Fork 或使用现有代码。我们希望这将有助于为可能仍依赖 Spectron 的任何项目提供更长的过渡期。

Spectron 的替代方案

如果您当前在项目中使用 Spectron 并希望迁移到替代测试解决方案,您可以在此处阅读我们的自动化测试指南

我们目前有几个其他推荐的 Spectron 替代品,包括 Playwright 和 WebDriverIO。 每个选项的官方教程都可以在我们的自动化测试文档中找到。

下一步计划

Electron 团队感谢您使用 Spectron 和 Electron。我们理解你们中的许多人依赖 Spectron 来测试您的应用程序,我们希望使这一过渡对您来说尽可能轻松。 感谢您选择 Electron!

让开源应用自动更新更简单

·3 分钟阅读

今天,我们发布了一个免费、开源、托管的更新网络服务和配套的npm 包,旨在为开源 Electron 应用提供便捷的自动更新功能。这是我们赋能应用开发者,让他们能够减少对部署的关注,更多地投入到为用户开发高质量体验的一步。


The new updater module in action

让生活更轻松

Electron 提供了一个 autoUpdater API,它允许应用程序从远程端点获取元数据以检查更新,在后台下载更新,并自动安装它们。

对许多 Electron 应用开发者来说,启用这些更新一直是部署过程中的一个繁琐步骤,因为这需要部署和维护一个仅用于提供应用版本历史元数据的 Web 服务器。

今天,我们宣布一项新的即插即用解决方案,用于自动应用更新。如果您的 Electron 应用托管在公开的 GitHub 仓库中,并且您使用 GitHub Releases 来发布构建版本,那么您就可以使用此服务为您的用户提供持续的应用更新。

使用新模块

为了最大限度地减少您的配置,我们创建了 update-electron-app,这是一个 npm 模块,它与新的 update.electronjs.org 网络服务集成。

安装模块

npm install update-electron-app

在您的应用的主进程的任何位置调用它

require('update-electron-app')();

就是这样!该模块将在应用启动时检查更新,之后每十分钟检查一次。找到更新后,它将在后台自动下载,并在更新准备就绪时显示一个对话框。

迁移现有应用

已经使用 Electron 的 autoUpdater API 的应用程序也可以使用这项服务。为此,您可以自定义 update-electron-app 模块或直接与 update.electronjs.org 集成

替代方案

如果您正在使用 electron-builder 来打包您的应用程序,您可以使用其内置的更新器。有关详细信息,请参阅 electron.build/auto-update

如果您的应用程序是私有的,您可能需要运行自己的更新服务器。为此有许多开源工具,包括 Zeit 的 Hazel 和 Atlassian 的 Nucleus。有关更多信息,请参阅 部署更新服务器 教程。

致谢

感谢 Julian Gruber 帮助设计和构建这个简单且可扩展的网络服务。感谢 Zeit 的同事们提供的开源 Hazel 服务,我们从中获得了设计灵感。感谢 Samuel Attard 的代码审查。感谢 Electron 社区帮助测试这项服务。

🌲 祝愿 Electron 应用拥有一个常青的未来!

宣布在 Electron 中支持 TypeScript

·阅读时长 5 分钟

electron npm 包现在包含一个 TypeScript 定义文件,该文件为整个 Electron API 提供了详细的注解。这些注解可以改善您的 Electron 开发体验,即使您编写的是原生 JavaScript。只需 npm install electron 即可在您的项目中获取最新的 Electron 类型。


TypeScript 是由 Microsoft 创建的一个开源编程语言。它是 JavaScript 的一个超集,通过添加对静态类型的支持来扩展该语言。近年来,TypeScript 社区发展迅速,在最近的 Stack Overflow 开发者调查中,TypeScript 被评为 最受欢迎的编程语言 之一。TypeScript 被描述为“可扩展的 JavaScript”,GitHubSlackMicrosoft 的团队都在使用它来编写可扩展的 Electron 应用,这些应用被数百万人使用。

TypeScript 支持 JavaScript 中的许多较新语言特性,如类、对象解构和 async/await,但其真正的差异化特性是类型注解。声明程序预期的输入和输出数据类型可以通过在编译时帮助您查找错误来减少 bug,并且这些注解还可以作为程序工作方式的正式声明。

当库是用原生 JavaScript 编写时,类型通常在编写文档时被模糊地定义为事后添加。函数通常可以接受比文档记录的更多的类型,或者函数可能存在未记录的隐藏约束,这可能导致运行时错误。

TypeScript 通过定义文件解决了这个问题。TypeScript 定义文件描述了库的所有函数及其预期的输入和输出类型。当库作者将 TypeScript 定义文件与其发布的库一起打包时,该库的消费者可以在编辑器中直接探索其 API 并立即开始使用它,通常无需查阅库的文档。

许多流行的项目,如 AngularVue.jsnode-github(现在包括 Electron!)会编译自己的定义文件并将其与发布的 npm 包一起打包。对于不打包自己定义文件的项目,有 DefinitelyTyped,这是一个社区维护的定义文件生态系统。

安装

从 1.6.10 版本开始,每次 Electron 发布都包含其自己的 TypeScript 定义文件。当您从 npm 安装 electron 包时,electron.d.ts 文件会自动与安装的包一起打包。

安装 Electron 的最安全方法是使用精确的版本号

npm install electron --save-dev --save-exact

或者,如果您使用的是 yarn

yarn add electron --dev --exact

如果您已经在使用第三方定义,如 @types/electron@types/node,您应该将它们从您的 Electron 项目中删除,以防止任何冲突。

该定义文件源自我们的结构化 API 文档,因此它将始终与Electron 的 API 文档保持一致。只需安装 electron,您就能始终获得与您正在使用的 Electron 版本同步的 TypeScript 定义。

用法

有关如何安装和使用 Electron 新 TypeScript 注解的摘要,请观看此短演示视频

如果您使用的是 Visual Studio Code,您已经内置了 TypeScript 支持。还有针对 AtomSublimevim其他编辑器的社区维护插件。

一旦您的编辑器配置为支持 TypeScript,您将开始看到更多上下文感知的行为,如自动完成建议、内联方法引用、参数检查等。

Method autocompletion

Method reference

Argument checking

开始使用 TypeScript

如果您是 TypeScript 新手并想了解更多信息,来自 Microsoft 的这个入门视频提供了对该语言的创建原因、工作原理、使用方法以及发展方向的良好概述。

在官方 TypeScript 网站上还有一个手册和一个游乐场

由于 TypeScript 是 JavaScript 的超集,您现有的 JavaScript 代码已经是有效的 TypeScript。这意味着您可以逐步将现有的 JavaScript 项目迁移到 TypeScript,根据需要添加新的语言功能。

致谢

此项目得以实现,离不开 Electron 社区开源维护者的帮助。感谢 Samuel AttardFelix RiesebergBirunthan MohanathasMilan BurdaBrendan Forster 以及其他许多人在 bug 修复、文档改进和技术指导方面的贡献。

支持

如果您在使用 Electron 新的 TypeScript 定义文件时遇到任何问题,请在 electron-typescript-definitions 仓库中提交 issue。

祝您 TypeScript 愉快!

Electron 用户社区

·阅读时长 4 分钟

我们在 Electron 网站上新增了一个 用户区(userland)部分,旨在帮助用户发现构成我们蓬勃发展的开源生态系统的开发者、软件包和应用程序。


github-contributors

用户区的起源

Userland 是软件社区中的人们汇聚在一起分享工具和想法的地方。这个词起源于 Unix 社区,当时指的是运行在内核之外的任何程序,但今天它的含义更广泛。当今天的 JavaScript 社区的人们提到 userland 时,他们通常指的是 npm 包注册表。这是大多数实验和创新的发生地,而 Node 和 JavaScript 语言(就像 Unix 内核一样)则保留了一套相对小且稳定的核心功能。

Node 和 Electron

与 Node 类似,Electron 拥有一套核心 API。这些 API 提供了开发跨平台桌面应用程序所需的基本功能。这种设计理念使 Electron 能够成为一个灵活的工具,而不会对如何使用它进行过多的规定。

用户区是“核心”的对应部分,使用户能够创建和共享扩展 Electron 功能的工具。

数据收集

为了更好地了解我们生态系统的趋势,我们分析了 15,000 个依赖于 `electron` 或 `electron-prebuilt` 的公共 GitHub 存储库的元数据。

我们使用了 GitHub APIlibraries.io API 和 npm 注册表来收集有关依赖项、开发依赖项、依赖者、包作者、仓库贡献者、下载量、fork 量、star 量等信息。

然后,我们使用这些数据生成了以下报告:

过滤结果

诸如 应用程序依赖项星标应用程序 等报告列出了包、应用程序和仓库,它们都有一个文本输入框,可以用来过滤结果。

当您在该输入框中键入时,页面的 URL 会动态更新。这使您可以复制代表特定用户区数据切片的 URL,然后与他人共享。

babel

更多内容敬请期待

这一系列初步报告仅仅是个开始。我们将继续收集有关社区如何构建 Electron 的数据,并将添加新的报告到网站上。

用于收集和显示这些数据的所有工具都是开源的:

如果您对如何改进这些报告有任何想法,请通过在网站仓库中创建一个 issue 或以上提到的任何仓库来告诉我们。

感谢您,Electron 社区,成就了今天的用户区!

无障碍工具

·阅读时间 2 分钟

构建可访问性应用程序很重要,我们很高兴能为 DevtronSpectron 引入新功能,让开发人员有机会让他们的应用对所有人更好。


Electron 应用程序的可访问性问题与网站类似,因为它们最终都是 HTML。但是,在 Electron 应用中,您无法使用在线资源进行可访问性审计,因为您的应用没有 URL 可以指向审计工具。

这些新功能将这些审计工具引入到您的 Electron 应用中。您可以选择将审计添加到 Spectron 的测试中,或者在 DevTools 中使用 Devtron。继续阅读以了解这些工具的摘要,或查看我们的 可访问性文档 以获取更多信息。

Spectron

在测试框架 Spectron 中,您现在可以审计应用程序中的每个窗口和 <webview> 标签。例如

app.client.auditAccessibility().then(function (audit) {
if (audit.failed) {
console.error(audit.message);
}
});

您可以在 Spectron 文档中了解有关此功能的更多信息。

Devtron

在 Devtron 中有一个新的可访问性选项卡,它允许您审计应用程序中的一个页面,并对结果进行排序和过滤。

devtron screenshot

这两个工具都使用了 Google 为 Chrome 构建的 Accessibility Developer Tools 库。您可以在该 存储库的 wiki 上了解有关此库使用的可访问性审计规则的更多信息。

如果您知道其他适用于 Electron 的优秀可访问性工具,请通过提交 pull request 将它们添加到 可访问性文档中。

Electron 上的 Mac App Store 和 Windows 自动更新程序

·阅读时间 2 分钟

最近 Electron 添加了两项令人兴奋的功能:兼容 Mac App Store 的构建以及内置的 Windows 自动更新程序。


Mac App Store 支持

v0.34.0 开始,每个 Electron 版本都包含一个与 Mac App Store 兼容的构建版本。在此之前,基于 Electron 构建的应用程序不符合 Apple 对 Mac App Store 的要求。其中大多数要求与私有 API 的使用有关。为了对 Electron 进行沙箱化处理,使其符合要求,需要删除两个模块。

  • crash-reporter
  • auto-updater

此外,在检测 DNS 更改、视频捕获和可访问性功能方面,一些行为也发生了变化。您可以在文档中阅读有关这些更改的更多信息,以及 提交您的应用程序到 Mac App Store 的信息。可以在 Electron 发行页面 上找到这些发行版本,它们都以 mas- 作为前缀。

相关拉取请求: electron/electron#3108, electron/electron#2920

Windows 自动更新程序

在 Electron v0.34.1 中,对 auto-updater 模块进行了改进,以便与 Squirrel.Windows 一起使用。这意味着 Electron 提供了简单的方法,可以方便地在 OS X 和 Windows 上自动更新您的应用程序。您可以在文档中详细了解 在 Windows 上设置您的应用程序以进行自动更新

相关 Pull Request:electron/electron#1984