跳到主要内容

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:test, node:sqlite)。

为何现在升级?

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

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

我需要采取什么行动?

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

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

下一步是什么

如果您有任何问题或疑虑,请随时写信给我们:info@electronjs.org。您还可以在我们的官方 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-compile 的支持: electron-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 入口点支持。)
  • Maker 现在并行运行: 在 Electron Forge 6 中,Maker 为了 ✨ 遗留 ✨ 原因而按顺序运行。从那时起,我们测试了 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 服务器的替代方案。

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

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 现已可用!此版本标志着自 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 插件、maker 和 publisher 的更多详细信息,请参阅文档的 扩展 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://forge.electron.js.cn 上的 Forge 文档提供任何反馈,我们有一个 GitBook 实例同步到 electron-forge/electron-forge-docs 仓库。

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 分钟阅读

今天,我们发布了一个免费、开源、托管的 更新网络服务 和配套的 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 帮助设计和构建这个简单且可扩展的 Web 服务。感谢 Zeit 的各位,感谢他们的开源 Hazel 服务,我们从中汲取了设计灵感。感谢 Samuel Attard 的代码审查。感谢 Electron 社区帮助测试此服务。

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

宣布 Electron 中对 TypeScript 的支持

·4 分钟阅读

electron npm 包现在包含一个 TypeScript 定义文件,该文件提供了整个 Electron API 的详细注解。即使您正在编写原生 JavaScript,这些注解也可以改善您的 Electron 开发体验。只需 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 网站上还有一个手册和一个playground

因为 TypeScript 是 JavaScript 的超集,所以您现有的 JavaScript 代码已经是有效的 TypeScript。这意味着您可以逐步将现有的 JavaScript 项目过渡到 TypeScript,并在需要时添加新的语言特性。

致谢

如果没有 Electron 开源维护者社区的帮助,这个项目是不可能实现的。感谢 Samuel AttardFelix RiesebergBirunthan MohanathasMilan BurdaBrendan Forster 和许多其他人为他们的错误修复、文档改进和技术指导做出的贡献。

支持

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

祝您 TypeScript 愉快!

Electron 用户领域

·3 分钟阅读

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


github-contributors

Userland 的起源

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

Node 和 Electron

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

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

数据收集

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

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

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

筛选结果

诸如应用依赖项加星应用之类的报告列出了包、应用和仓库,它们都有一个文本输入,可用于筛选结果。

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

babel

更多内容即将推出

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

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

如果您对如何改进这些报告有任何想法,请在网站仓库上开启 issue 或任何上述仓库中告知我们。

感谢您,Electron 社区,使 userland 成为今天的样子!

辅助功能工具

·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 将它们添加到 可访问性文档 中。

Mac App Store 和 Electron 上的 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