跳转到主要内容

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 更新日志

破坏性变更

  • 切换到使用 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 入口点支持。)
  • 生成器现在并行运行在 Electron Forge 6 中,生成器是顺序运行的,原因是为了 ✨ 兼容性 ✨。从那时起,我们已经测试了并行处理 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 的活跃用户,我们将非常感谢您的 ⭐ Star ⭐!

介绍 @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 在 beta 阶段花费了很长时间,其发布周期逐渐放慢。然而,我们在 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 核心移出并成为 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 分钟阅读

今天,我们发布了一个免费、开源、托管的 更新网络服务 和配套的 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 是由 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 用户社区

·阅读时长 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 的数据,并将添加新的报告到网站上。

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

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

感谢您,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 的优秀可访问性工具,请通过提交 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 Requests:electron/electron#3108electron/electron#2920

Windows 自动更新程序

在 Electron v0.34.1 中,auto-updater 模块得到了改进,以便与 Squirrel.Windows 一起使用。这意味着 Electron 提供了在 OS X 和 Windows 上自动更新您的应用程序的便捷方式。您可以在文档中阅读有关为 Windows 上的应用程序设置自动更新的更多信息。

相关 Pull Request:electron/electron#1984