2023 年生態系統回顧
回顧 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-prebuilt
和electron-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 進入點支援。) - 現在,製作器並行執行:在 Electron Forge 6 中,製作器是依序執行的,原因 ✨ 很老舊 ✨ 。從那時起,我們已測試了「製作」步驟的並行化,沒有任何不良副作用,因此您應該可以在為同一平台建置多個目標時看到速度加快!
🙇 非常感謝 mahnunchik 為 Forge 組態中的 GCS 發行者和 ESM 支援做出貢獻!
更好的靜態儲存自動更新
Squirrel.Windows 和 Squirrel.Mac 是特定於平台的更新程式技術,可支援 Electron 的內建 autoUpdater
模組。這兩個專案都支援透過兩種方法進行自動更新
- 相容 Squirrel 的更新伺服器
- 託管在靜態儲存提供者上的資訊清單 URL (例如 AWS、Google Cloud Platform、Microsoft Azure 等)
更新伺服器方法傳統上是 Electron 應用程式的建議方法 (並提供更新邏輯的其他自訂),但它有一個主要的缺點 — 如果應用程式是封閉原始碼,則需要應用程式維護自己的伺服器執行個體。
另一方面,靜態儲存方法一直都是可行的,但在 Electron 內部文件中未記載,並且在 Electron 工具套件中支援不佳。
在 @MarshallOfSound
的一些出色工作下,無伺服器自動應用程式更新的更新故事已大幅簡化
- 現在可以設定 Electron Forge 的 Zip 和 Squirrel.Windows 製作器來輸出相容於
autoUpdater
的更新資訊清單。 - 新的主要版本
update-electron-app
(v2.0.0) 現在可以讀取這些產生的資訊清單,作為 update.electronjs.org 伺服器的替代方案。
將您的製作器和發行者設定為將更新資訊清單上傳到雲端檔案儲存空間後,您只需幾行組態即可啟用自動更新
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/
命名空間下。
⭐ 在此過程中,我們也意外地將 electron/packager 儲存庫設為私有,這造成一個不幸的副作用,即抹除了我們的 GitHub 星號數 (在抹除之前超過 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 使用。
請試用看看,並在儲存庫的問題追蹤器中給我們您的意見回饋!
下一步是什麼?
我們將在下個月進入一年一度的 12 月靜默期。在我們這樣做的同時,我們將思考如何在 2024 年讓 Electron 開發體驗更加美好。
您希望看到我們接下來開發什麼?請告訴我們!