跳到主要内容

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 的生态系统工作组决定将所有包升级到最早支持同步 ESM 图的 require() 的 Node 版本(参见 nodejs/node#51977nodejs/node#53500),该版本在其 LTS 日期之后将在未来某个时间点支持此功能。

我们已决定将更新时间定在 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 变更日志

重大更改

  • macOS 公证已切换到 notarytool 截至 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 是该二进制文件的替代品,附带增强的开发体验功能,但最终作为一个项目被废弃了。

亮点

  • 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 为 Forge 配置中的 GCS 发布器和 ESM 支持做出的贡献!

更好的静态存储自动更新

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

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

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

另一方面,静态存储方法一直都是可行的,但在 Electron 内部没有文档说明,并且在 Electron 工具包中的支持也很差。

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

  • Electron Forge 的 Zip 和 Squirrel.Windows 创建器现在可以配置为输出 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 将继续在其 @electron-forge/ 命名空间下发布其所有 monorepo 包。
求星

⭐ 在此过程中,我们还意外地将 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 文档提供任何反馈,我们有一个与 electron-forge/electron-forge-docs 仓库同步的 GitBook 实例。

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 仓库,以便其他人可以自由分叉或使用现有代码来开发他们的项目。我们希望这有助于为仍可能依赖 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,这是一个与新的 update.electronjs.org 网络服务集成的 npm 模块。

安装模块

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 是微软创建的一种开源编程语言。它是 JavaScript 的超集,通过添加对静态类型的支持来扩展该语言。TypeScript 社区近年来发展迅速,在最近的 Stack Overflow 开发者调查中,TypeScript 被评为 最受欢迎的编程语言之一。TypeScript 被描述为“可伸缩的 JavaScript”,并且 GitHubSlackMicrosoft 的团队都在使用它来编写数百万用户使用的可伸缩 Electron 应用程序。

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

当库以纯 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 以及许多其他人在错误修复、文档改进和技术指导方面的贡献。

支持

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

祝您 TypeScript 编码愉快!

Electron 用户空间

·4 分钟阅读

我们在 Electron 网站上新增了一个用户空间部分,以帮助用户发现构成我们蓬勃发展的开源生态系统的人员、包和应用程序。


github-contributors

用户空间的起源

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

Node 和 Electron

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

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

收集数据

为了更好地了解我们生态系统的趋势,我们分析了 15,000 个依赖于 electronelectron-prebuilt 的公共 GitHub 仓库的元数据:

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

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

筛选结果

报告如应用依赖项星标应用列出了包、应用和仓库,并带有一个文本输入框,可用于筛选结果。

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

babel

更多内容即将推出

第一批报告只是一个开始。我们将继续收集社区如何构建 Electron 的数据,并将向网站添加新报告。

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

如果您对如何改进这些报告有任何想法,请通过在网站仓库或上述任何仓库中创建 Issue 告诉我们。

感谢 Electron 社区,正是你们成就了今天的用户空间!

无障碍工具

·2 分钟阅读

开发无障碍应用程序非常重要,我们很高兴为 DevtronSpectron 引入新功能,让开发者有机会让他们的应用程序对所有人更友好。


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

这些新功能将这些审计工具带到您的 Electron 应用程序中。您可以选择使用 Spectron 将审计添加到您的测试中,或使用 Devtron 在 DevTools 中使用它们。继续阅读以获取工具摘要,或查看我们的无障碍性文档以获取更多信息。

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 的优秀无障碍工具,请通过拉取请求将其添加到无障碍性文档中。

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 上设置应用程序自动更新的信息。

相关拉取请求:electron/electron#1984