跳到主内容

标记为“生态系统”的 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 日期后的未来某个时间点,将所有包升级到最早支持 require() 同步 ESM 图的 Node 版本(参见 nodejs/node#51977nodejs/node#53500)。

我们决定将更新时间设定在 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 的范围较小,不过仍包含一些重大变更 (breaking changes)。今后,我们将继续在需要引入重大变更时发布 Forge 的主要版本。

更多详情,请参阅 GitHub 上的完整 Forge v7.0.0 变更日志

重大变更 (Breaking changes)

  • macOS 公证切换为 notarytool自 2023 年 11 月 1 日起,Apple 停用了旧的 altool 进行 macOS 公证,此版本将它从 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 是该二进制文件的替代品,具有增强的开发者体验功能,但最终被放弃了。

主要特性

  • Google Cloud Storage 发布器作为我们更好地支持静态自动更新工作的一部分,Electron Forge 现在支持直接发布到 Google Cloud Storage!
  • 支持 ESM forge.config.jsElectron 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 makers 现在可以配置为输出与 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 包。
求赞 (寻求 Star)

⭐ 在此过程中,我们还不小心将 electron/packager 仓库设为私有,这带来了不幸的副作用,即清除了我们的 GitHub Star 计数(清除前超过 9000)。如果您是 Packager 的活跃用户,我们将非常感谢您的 ⭐ 点赞 ⭐!

介绍 @electron/windows-sign

从 2023 年 6 月 1 日起,行业标准开始要求 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 插件、makers 和发布器的更多详细信息,请参阅文档的扩展 Electron Forge 部分。

重大变更 (Breaking changes)

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 文档提供任何反馈,我们有一个与 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 团队将继续接受社区的拉取请求 (pull requests)。
  • 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 分钟阅读

今天,我们发布了一个免费、开源、托管的更新 webservice 和配套的npm 包,以便为开源 Electron 应用提供便捷的自动更新。这是朝着赋能应用开发者少考虑部署,多关注为用户开发高质量体验迈出的一步。


The new updater module in action

让生活更轻松

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

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

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

使用新模块

为了最大限度地减少您的配置工作,我们创建了 update-electron-app,这是一个与新的 update.electronjs.org webservice 集成的 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 是微软创建的一种开源编程语言。它是 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 新手并想了解更多信息,这个来自微软的介绍视频提供了一个不错的概述,讲解了为什么创建这门语言、它是如何工作的、如何使用以及它的发展方向。

在 TypeScript 官方网站上,还有一个手册和一个在线演练场 (playground)

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

致谢

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

支持

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

快乐地使用 TypeScript 吧!

Electron 用户领域

·3 分钟阅读

我们在 Electron 网站上新增了一个用户领域 (userland) 部分,以帮助用户发现构成我们繁荣的开源生态系统的人物、包和应用。


github-contributors

用户领域的起源

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

Node 和 Electron

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

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

收集数据

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

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

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

  • 应用开发依赖:在 Electron 应用中最常被列为 devDependencies 的包。
  • GitHub 贡献者:为众多 Electron 相关 GitHub 仓库做出贡献的 GitHub 用户。
  • 包依赖:经常被其他 npm 包依赖的 Electron 相关 npm 包。
  • 星标应用:拥有大量星标的 Electron 应用(非 npm 包)。
  • 下载最多的包:下载量很大的 Electron 相关 npm 包。
  • 应用依赖:在 Electron 应用中最常被列为 dependencies 的包。
  • 包作者:Electron 相关 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 的优秀可访问性工具,请通过 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