Electron Forge 6 のご紹介
Electron Forge v6.0.0 がリリースされたことをお知らせします。このリリースは、2018年以来Forgeの最初のメジャーリリースであり、プロジェクトをGithub上のelectron-userland
からメインの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
Forgeの理念とアーキテクチャの詳細については、Electron 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は代わりに、多くの小さなプロジェクトを持つモノレポプロジェクトとして構成されています。
公式にサポートされています
歴史的に、Electronのメンテナーはビルドツールについて意見を述べておらず、タスクをさまざまなコミュニティパッケージに任せてきました。しかし、Electronがプロジェクトとして成熟するにつれて、Electronの新しい開発者がアプリの構築と配布に必要なツールを理解することが難しくなっています。
Electron開発者の配布プロセスを支援するために、ForgeをElectronの公式のバッテリーを含むビルドパイプラインにすることにしました。
昨年、Forgeを公式のElectronドキュメントに徐々に統合してきました。最近、Forgeをelectron-userland/electron-forge
にある古いホームからelectron/forgeリポジトリに移動しました。これで、Electron Forgeを一般にリリースする準備が整いました。
はじめに
新しいForgeプロジェクトの初期化
新しいElectron Forgeプロジェクトのスキャフォールディングは、create-electron-app
CLIスクリプトを使用して実行できます。
- Yarn
- npm
yarn create electron-app my-app --template=webpack
cd my-app
yarn start
npm init electron-app@latest my-app -- --template=webpack
cd my-app
npm start
このスクリプトは、my-app
フォルダーに、完全なJavaScriptバンドルと事前設定されたビルドパイプラインを備えたElectronプロジェクトを作成します。
詳細については、Forgeドキュメントのはじめにガイドをご覧ください。
上記のコードスニペットは、ForgeのWebpackテンプレートを使用しています。これは、新しいElectronプロジェクトの開始点として推奨されています。このテンプレートは、@electron-forge/plugin-webpack
プラグインをベースに構築されており、webpackをElectron Forgeに統合するいくつかの方法を提供します。具体的には、以下のとおりです。
- レンダラーでのHMRのサポートを含む、webpack-dev-serverを使用したローカル開発フローの強化
- アプリケーションのパッケージ化前のwebpackバンドルのビルドロジックの処理
- webpackバンドルプロセスでのネイティブNodeモジュールのサポートの追加
TypeScriptのサポートが必要な場合は、代わりにWebpack + TypeScriptテンプレートの使用を検討してください。
既存プロジェクトのインポート
Electron Forge CLIには、既存のElectronプロジェクトをインポートするためのコマンドも含まれています。
- Yarn
- npm
cd my-app
yarn add --dev @electron-forge/cli
yarn electron-forge import
cd my-app
npm install --save-dev @electron-forge/cli
npm exec --package=@electron-forge/cli -c "electron-forge import"
import
コマンドを使用すると、Electron Forgeはいくつかのコア依存関係を追加し、新しいforge.config.js
設定ファイルを作成します。既存のビルドツール(Electron Packager、Electron Builder、Forge 5など)がある場合は、できるだけ多くの設定を移移しようとします。既存の設定の一部は、手動で移行する必要がある場合があります。
手動移行の詳細については、Forgeのインポートに関するドキュメントを参照してください。ヘルプが必要な場合は、Discordサーバーにご参加ください!
Forgeに切り替える理由
Electronアプリのパッケージ化と公開のためのツールがすでにある場合でも、Electron Forgeを採用することによるメリットは、初期の切り替えコストを上回る可能性があります。
Forgeを使用する主なメリットは2つあると考えています。
-
Forgeは、Electronでサポートされるとすぐに、アプリケーション構築のための新機能を受け取ります。 この場合、新しいツールのサポートを自分で追加したり、他のパッケージがそのサポートを実装するのを待ってからアップグレードしたりする必要はありません。最近の例としては、macOSユニバーサルバイナリとASAR整合性チェックがあります。
-
Forgeのマルチパッケージアーキテクチャにより、理解と拡張が容易になります。 Forgeは、明確な役割を持つ多くの小さなパッケージで構成されているため、コードフローを理解しやすくなっています。さらに、Forgeの拡張可能なAPI設計により、高度なユースケースのために、提供されている設定オプションとは別に独自の追加ビルドロジックを記述できます。カスタムForgeプラグイン、メーカー、およびパブリッシャーの作成の詳細については、ドキュメントのElectron Forgeの拡張セクションを参照してください。
破壊的変更
Forge 6はベータフェーズで長い時間を費やし、リリースの頻度は徐々に低下しています。しかし、2022年後半には開発を加速させ、v6.0.0の安定版リリース前に、最後のいくつかの破壊的変更をプッシュするために、 последних несколько релизовを使用しました。
Electron Forge 6ベータユーザーの場合は、最近のベータ版(>=6.0.0-beta.65
)で行われた破壊的変更のリストについては、v6.0.0 GitHubリリースノートを参照してください。
変更とコミットの完全なリストは、リポジトリのCHANGELOG.mdにあります。
フィードバックをお寄せください!
必要なものをお知らせください! Electron Forgeチームは、ユーザーにより適したプロジェクトを構築するために常に努力しています。
機能リクエストを送信したり、問題を投稿したり、フィードバックをお寄せいただくことで、Electron Forgeの改善にご協力いただけます! また、Electron Forge専用のチャンネルがある公式Electron Discordサーバーにもご参加ください。
https://electronforge.dokyumento.jpのForgeドキュメントに関するフィードバックをお寄せいただく場合は、electron-forge/electron-forge-docsリポジトリに同期されたGitBookインスタンスがあります。