跳到主要内容

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 版本无关。

下一步是什么?

如果您有任何问题或疑虑,请随时写信给我们:[email protected]。您还可以在我们的官方 Electron Discord 中找到社区支持。

2023 年生态系统回顾

·5 分钟阅读

回顾 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 为 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 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 使用。

请尝试一下并在 存储库的问题跟踪器 中向我们提供您的反馈!

下一步是什么?

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

您希望我们接下来做什么?请告诉我们!

介绍 Electron Forge 6

·6 分钟阅读

我们很高兴地宣布 Electron Forge v6.0.0 现在可用!此版本标志着自 2018 年以来 Forge 的第一个主要版本发布,并将该项目从 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 打包过程中添加对 Native 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 测试版用户,请参阅v6.0.0 GitHub 发行说明,以获取最近测试版(>=6.0.0-beta.65)中所做的重大更改列表。

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

提交您的反馈!

告诉我们您需要什么!Electron Forge 团队一直在努力构建该项目,以更好地满足其用户的需求。

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

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

Spectron 弃用通知

·2 分钟阅读

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


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

为什么要弃用 Spectron?

虽然 Spectron 始终针对每个新版本的 Electron 发布新版本,但该项目一年多来几乎没有维护和改进,目前也没有全职维护人员。随着远程模块从 Electron 核心移出并进入 Electron 14 中的外部模块,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 分钟阅读

今天,我们发布了一个免费的开源托管更新 Web 服务和配套的 npm 包,以方便为开源 Electron 应用程序启用自动更新。这是朝着让应用程序开发人员减少考虑部署,而更多地考虑为用户开发高质量体验迈出的一步。


The new updater module in action

让生活更轻松

Electron 有一个 autoUpdater API,该 API 使应用程序能够从远程端点使用元数据来检查更新、在后台下载它们并自动安装它们。

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

今天,我们宣布了一种新的即插即用解决方案,用于自动应用程序更新。如果您的 Electron 应用程序位于公共 GitHub 存储库中,并且您使用 GitHub Releases 来发布构建,则可以使用此服务向用户提供持续的应用程序更新。

使用新模块

为了最大限度地减少您的配置,我们创建了 update-electron-app,一个与新的 update.electronjs.org Web 服务集成的 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 帮助设计和构建这个简单且可扩展的 Web 服务。感谢 Zeit 的人们提供的开源 Hazel 服务,我们从中汲取了设计灵感。感谢 Samuel Attard 进行代码审查。感谢 Electron 社区帮助测试此服务。

🌲 祝愿 Electron 应用程序拥有常青的未来!

宣布 Electron 中支持 TypeScript

·4 分钟阅读

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,但它真正的区别在于类型注解。声明程序期望的输入和输出数据类型可以通过帮助您在编译时发现错误来减少错误,并且注解也可以作为程序如何工作的正式声明。

当库是用原生 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 用户领域

·3 分钟阅读

我们已在 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 注册表来收集有关依赖项、开发依赖项、依赖者、包作者、存储库贡献者、下载计数、fork 计数、star 数等信息。

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

筛选结果

应用程序依赖项加星应用程序这样的报告会列出包、应用程序和存储库,这些报告都有一个文本输入框,可用于筛选结果。

当您在此输入框中键入时,页面的 URL 会动态更新。这允许您复制表示用户区特定切片的 URL,然后与他人共享。

babel

更多内容即将推出

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

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

如果您对如何改进这些报告有任何想法,请在网站存储库或上述任何存储库中提出问题来告知我们。

感谢您,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-

相关 Pull Request: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