From b5ba8935170939024dbbf164a7ab6616cc338020 Mon Sep 17 00:00:00 2001 From: George Xu Date: Wed, 12 Oct 2022 17:02:17 -0700 Subject: [PATCH 01/16] chore: Forge v6 blog post --- blog/forge-v6-release.md | 158 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 blog/forge-v6-release.md diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md new file mode 100644 index 000000000..03ce07312 --- /dev/null +++ b/blog/forge-v6-release.md @@ -0,0 +1,158 @@ +--- +title: Electron Forge v6 Stable Release +date: 2022-10-26T00:00:00.000Z +authors: + - name: georgexu99 + url: 'https://github.com/georgexu99' + image_url: 'https://github.com/georgexu99.png?size=96' + - name: vertedinde + url: 'https://github.com/vertedinde' + image_url: 'https://github.com/vertedinde.png?size=96' +slug: forge-v6-release-blog +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +The Electron Forge Team is excited to announce that Forge v6 is now available! This stable release contains many significant new features and improvements. Highlights of this release include the addition of our Webpack plugin as well as the introduction of the Forge Core and CLI APIs. + +## What Does Switching to Stable Mean? + +During our time in a beta release state, our team has been busy refactoring Forge’s code, improving its architecture, creating new features as well as ironing out bugs and issues. + +Now that we are done making changes, we’re ready to release a stable version of Forge! + +## Upgrading to Forge v6 + +Forge will try to migrate from Electron Forge v5 automatically as much as possible, but some of it may need to be migrated manually. Importing your settings can be done with the same process as importing an existing Electron app to Forge: + + + + +``` + 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" +``` + + + + +## Introducing the Webpack Plugin + +This release adds webpack support to your build pipeline. Webpack is a module bundler: it takes your codebase’s dependencies and modules, creates a dependency graph, and bundles them (stitching them together into a single file) into a form that your index.html can read. Bundling increases performance by reducing the number of asset calls required. + +Forge v6 comes with a [webpack template] that makes use of the new `@electron-forge/plugin-webpack` module, plus some preset Webpack configuration options. Configuration instructions can be found in the [docs](https://www.electronforge.io/config/plugins/webpack). + +The addition of webpack support brings several webpack features to your Forge app. Notable features include but are not limited to: +- Hot module reloading +- DevServer support +- Adding content security policies +- Native module support + +## The Forge API Has Moved + +The Forge v5 API has been refactored into its own separate node module. The new refactored Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. + +This release also adds access to the Core API from your command line interface in the form of another [CLI API]. At a high level, this is a wrapper for the Forge Core API that is accessible from the terminal. + +## Breaking Changes: + +- Node 14 is now the minimum supported version. Please upgrade to Node 14 to continue using Electron Forge +- Remove support for electron-compile ([d59695ec](https://github.com/electron-userland/electron-forge/commit/d59695ec)) + +## Other Changes: + +_A complete list of changes and commits can be found [here](https://github.com/electron-userland/electron-forge/blob/main/CHANGELOG.md)_. + + +### Core + +* add support for restarting the Electron process quickly from terminal ([24aab4fd](https://github.com/electron-userland/electron-forge/commit/24aab4fd)) +* add resolveForgeConfig hook ([c2f4cfa6](https://github.com/electron-userland/electron-forge/commit/c2f4cfa6)) +* allow mutating packageJSON on load ([1b7e4117](https://github.com/electron-userland/electron-forge/commit/1b7e4117)) +* core: allow no config to be present, default to an empty object (#543) ([c71ef163](https://github.com/electron-userland/electron-forge/commit/c71ef163)) +* core: resolve forge.config.js by default if it exists (#569) ([5431dfa1](https://github.com/electron-userland/electron-forge/commit/5431dfa1)) +* add support for electron-nightly ([a74169ee](https://github.com/electron-userland/electron-forge/commit/a74169ee)) +* add basic Forge v5 to v6 importer ([648ef333](https://github.com/electron-userland/electron-forge/commit/648ef333)) +* add basic support for non-exact Electron versions ([177012e9](https://github.com/electron-userland/electron-forge/commit/177012e9)) +* use git config to determine author before username (#920) ([57e30a47](https://github.com/electron-userland/electron-forge/commit/57e30a47)) +* add a force flag to init to allow it to overwrite an existing directory (#1020) ([dcdc2a1c](https://github.com/electron-userland/electron-forge/commit/dcdc2a1c)) +* add params to the postPackage hook (#1896) ([e9a2ba07](https://github.com/electron-userland/electron-forge/commit/e9a2ba07)) + +### Packagers + +* added maker-pkg ([8728baa1](https://github.com/electron-userland/electron-forge/commit/8728baa1)) for .pkg files on macOS +* maker-dmg: update electron-installer-dmg for new features ([766259fa](https://github.com/electron-userland/electron-forge/commit/766259fa)) +* Make autoUpdate and autoLaunch features configurable in MakerWixConfig (#2620) ([bf7d271a](https://github.com/electron-userland/electron-forge/commit/bf7d271a)) + +### Publishers + +* add publisher-nucleus to add nucleus upload support to v6 ([131665cb](https://github.com/electron-userland/electron-forge/commit/131665cb)) +* publisher-bitbucket: initial publish publisher-bitbucket (#571) ([82e8c85e](https://github.com/electron-userland/electron-forge/commit/82e8c85e)) +* publisher-github: add debug support for Octokit (#2499) ([73252c30](https://github.com/electron-userland/electron-forge/commit/73252c30)) +* publisher-github: add retry support (#2550) ([a400066d](https://github.com/electron-userland/electron-forge/commit/a400066d)) +* publisher-ers: support flavor config (#2766) ([6069ebe1](https://github.com/electron-userland/electron-forge/commit/6069ebe1)) + +### Plugins + +* plugin-local-electron: add plugin-local-electron ([8af92682](https://github.com/electron-userland/electron-forge/commit/8af92682)) +* **plugin webpack** + * plugin-webpack: new webpack plugin ([531d3c80](https://github.com/electron-userland/electron-forge/commit/531d3c80)) + * log out the web logger URL on start ([cdd4cde1](https://github.com/electron-userland/electron-forge/commit/cdd4cde1)) + * capture logs into web ui, handle preload scripts ([e800049b](https://github.com/electron-userland/electron-forge/commit/e800049b)) + * plugin-webpack: upgrade to webpack 4 ([8807c451](https://github.com/electron-userland/electron-forge/commit/8807c451)) + * support web workers by defining entry points without HTML files ([a85ce4eb](https://github.com/electron-userland/electron-forge/commit/a85ce4eb)) + * auto-ignore everything that is not webpack output during the webpack build. Fixes #593 ([51a22f74](https://github.com/electron-userland/electron-forge/commit/51a22f74)) + * add a barebones webpack template ([3b935c8f](https://github.com/electron-userland/electron-forge/commit/3b935c8f)) + * allow port to be configurable for web-multi-logger ([330d0f59](https://github.com/electron-userland/electron-forge/commit/330d0f59)) + * support native modules in webpack template ([ed5fd371](https://github.com/electron-userland/electron-forge/commit/ed5fd371)) + * add file-loader/style-loader for handling the static CSS file ([054a458a](https://github.com/electron-userland/electron-forge/commit/054a458a)) + * add typescript-webpack template (#1344) ([7c8259dd](https://github.com/electron-userland/electron-forge/commit/7c8259dd)) + * add template for typescript (#1319) ([cece7da7](https://github.com/electron-userland/electron-forge/commit/cece7da7)) + * add an option to export webpack compilation stats (#639) ([7275f390](https://github.com/electron-userland/electron-forge/commit/7275f390)) + * upgrade to Webpack 5 (#2225) ([564a4451](https://github.com/electron-userland/electron-forge/commit/564a4451)) + * improve native asset relocation without forking Vercel loader (#2320) ([db8a3f39](https://github.com/electron-userland/electron-forge/commit/db8a3f39)) + * add devContentSecurityPolicy config option (#2332) ([7d461090](https://github.com/electron-userland/electron-forge/commit/7d461090)) + * add nodeIntegration config for renderers (#2330) ([6e0a6248](https://github.com/electron-userland/electron-forge/commit/6e0a6248)) + * plugin-webpack: allow most webpack-dev-server options to be configurable (#2444) ([699d4862](https://github.com/electron-userland/electron-forge/commit/699d4862)) + * webpack-plugin: webpack 5 configuration factory (#2776) ([f4a77741](https://github.com/electron-userland/electron-forge/commit/f4a77741)) + * Add packageSourceMaps option to WebpackPluginConfig (#2581) ([2bb5e0d8](https://github.com/electron-userland/electron-forge/commit/2bb5e0d8)) + * allow specifing a seperate webpack config for your preload (#2679) ([f5909424](https://github.com/electron-userland/electron-forge/commit/f5909424)) + * Allow each entrypoints to specify `nodeIntegration` (#2867) ([1f45e2ca](https://github.com/electron-userland/electron-forge/commit/1f45e2ca)) +* plugin-compile: add the electron compile plugin into the monorepo ([5907de5d](https://github.com/electron-userland/electron-forge/commit/5907de5d)) +* add Electronegativity plugin (#1900) ([a6a65cae](https://github.com/electron-userland/electron-forge/commit/a6a65cae)) + +### CLI + +* cli: dont check system if the marker file is created ([ce5a4a2e](https://github.com/electron-userland/electron-forge/commit/ce5a4a2e)) +* add —inspect-brk-electron option (#1328) ([c5a6ea17](https://github.com/electron-userland/electron-forge/commit/c5a6ea17)) + +### Other + +* codebase rewritten in typescript +* add [fromBuildIdentifier](https://js.electronforge.io/classes/_electron_forge_core.ForgeUtils.html#fromBuildIdentifier): Helper for creating a dynamic config value that will get its real value based on the `buildIdentifier` in your Forge config. ([dc6c9fce](https://github.com/electron-userland/electron-forge/commit/dc6c9fce)) +* measure performance of async oras when in debug mode ([3b625ded](https://github.com/electron-userland/electron-forge/commit/3b625ded)) +* Node 8 support (#875) ([db89c4ef](https://github.com/electron-userland/electron-forge/commit/db89c4ef)) +* Various improvements for electron/template (#950) ([641f5218](https://github.com/electron-userland/electron-forge/commit/641f5218)) +* s3: add options to allow use custom instance (#1601) ([38e63d15](https://github.com/electron-userland/electron-forge/commit/38e63d15)) +* allow specifying alternative tag prefix (#2605) ([88d9d722](https://github.com/electron-userland/electron-forge/commit/88d9d722)) +* add a default preload script (#2722) ([636e2c5d](https://github.com/electron-userland/electron-forge/commit/636e2c5d)) + + + +[Core API]: https://www.npmjs.com/package/@electron-forge/core +[CLI API]: https://www.npmjs.com/package/@electron-forge/cli +[webpack template]: https://www.electronforge.io/templates/webpack-template + + + From 300ac33dafb1d800be632e6afe37d692e9df602b Mon Sep 17 00:00:00 2001 From: George Xu Date: Thu, 13 Oct 2022 15:54:50 -0700 Subject: [PATCH 02/16] chore: update stable release section and add switching section --- blog/forge-v6-release.md | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index 03ce07312..1321021c3 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -1,5 +1,5 @@ --- -title: Electron Forge v6 Stable Release +title: Electron Forge v6.0.0 date: 2022-10-26T00:00:00.000Z authors: - name: georgexu99 @@ -11,41 +11,19 @@ authors: slug: forge-v6-release-blog --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - The Electron Forge Team is excited to announce that Forge v6 is now available! This stable release contains many significant new features and improvements. Highlights of this release include the addition of our Webpack plugin as well as the introduction of the Forge Core and CLI APIs. -## What Does Switching to Stable Mean? +## What Does a Stable Release Mean? During our time in a beta release state, our team has been busy refactoring Forge’s code, improving its architecture, creating new features as well as ironing out bugs and issues. -Now that we are done making changes, we’re ready to release a stable version of Forge! - -## Upgrading to Forge v6 - -Forge will try to migrate from Electron Forge v5 automatically as much as possible, but some of it may need to be migrated manually. Importing your settings can be done with the same process as importing an existing Electron app to Forge: - - - - -``` - cd my-app - yarn add --dev @electron-forge/cli - yarn electron-forge import -``` +A stable release means that we are done making major breaking changes, and that beta changes have been tested thoroughly both internally and through the community. - - +## Why Switch to Forge From an Existing Pipeline? -``` - cd my-app - npm install --save-dev @electron-forge/cli - npm exec --package=@electron-forge/cli -c "electron-forge import" -``` +If your app already uses an existing build tooling solution that provides packaging and publishing capabilities, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. - - +Electron Forge will be kept up to date with the latest Electron tooling updates. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. ## Introducing the Webpack Plugin @@ -61,7 +39,7 @@ The addition of webpack support brings several webpack features to your Forge ap ## The Forge API Has Moved -The Forge v5 API has been refactored into its own separate node module. The new refactored Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. +If you aren't already on the beta version of Forge, since the last stable release the Forge v5 API has been refactored into its own separate node module. The new refactored Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. This release also adds access to the Core API from your command line interface in the form of another [CLI API]. At a high level, this is a wrapper for the Forge Core API that is accessible from the terminal. From 4f24469f02c393dc9f8eb26c52b990c9cf2fe28a Mon Sep 17 00:00:00 2001 From: George Xu Date: Thu, 13 Oct 2022 16:21:53 -0700 Subject: [PATCH 03/16] minor change --- blog/forge-v6-release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index 1321021c3..1e7f3335a 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -39,7 +39,7 @@ The addition of webpack support brings several webpack features to your Forge ap ## The Forge API Has Moved -If you aren't already on the beta version of Forge, since the last stable release the Forge v5 API has been refactored into its own separate node module. The new refactored Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. +If you aren't already on the beta version of Forge, since the previous stable release the Forge v5 API has been refactored into its own separate node module. The new refactored Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. This release also adds access to the Core API from your command line interface in the form of another [CLI API]. At a high level, this is a wrapper for the Forge Core API that is accessible from the terminal. @@ -84,7 +84,7 @@ _A complete list of changes and commits can be found [here](https://github.com/e ### Plugins * plugin-local-electron: add plugin-local-electron ([8af92682](https://github.com/electron-userland/electron-forge/commit/8af92682)) -* **plugin webpack** +* plugin webpack * plugin-webpack: new webpack plugin ([531d3c80](https://github.com/electron-userland/electron-forge/commit/531d3c80)) * log out the web logger URL on start ([cdd4cde1](https://github.com/electron-userland/electron-forge/commit/cdd4cde1)) * capture logs into web ui, handle preload scripts ([e800049b](https://github.com/electron-userland/electron-forge/commit/e800049b)) From d708384efef03e9c330d1b2c61f6b506bbc970ae Mon Sep 17 00:00:00 2001 From: George Xu Date: Thu, 13 Oct 2022 16:55:54 -0700 Subject: [PATCH 04/16] change breaking changes to breaking changes since beta --- blog/forge-v6-release.md | 86 +++------------------------------------- 1 file changed, 6 insertions(+), 80 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index 1e7f3335a..c3983f3c3 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -43,89 +43,15 @@ If you aren't already on the beta version of Forge, since the previous stable re This release also adds access to the Core API from your command line interface in the form of another [CLI API]. At a high level, this is a wrapper for the Forge Core API that is accessible from the terminal. -## Breaking Changes: - -- Node 14 is now the minimum supported version. Please upgrade to Node 14 to continue using Electron Forge -- Remove support for electron-compile ([d59695ec](https://github.com/electron-userland/electron-forge/commit/d59695ec)) - -## Other Changes: +## Breaking Changes Since Beta: _A complete list of changes and commits can be found [here](https://github.com/electron-userland/electron-forge/blob/main/CHANGELOG.md)_. - -### Core - -* add support for restarting the Electron process quickly from terminal ([24aab4fd](https://github.com/electron-userland/electron-forge/commit/24aab4fd)) -* add resolveForgeConfig hook ([c2f4cfa6](https://github.com/electron-userland/electron-forge/commit/c2f4cfa6)) -* allow mutating packageJSON on load ([1b7e4117](https://github.com/electron-userland/electron-forge/commit/1b7e4117)) -* core: allow no config to be present, default to an empty object (#543) ([c71ef163](https://github.com/electron-userland/electron-forge/commit/c71ef163)) -* core: resolve forge.config.js by default if it exists (#569) ([5431dfa1](https://github.com/electron-userland/electron-forge/commit/5431dfa1)) -* add support for electron-nightly ([a74169ee](https://github.com/electron-userland/electron-forge/commit/a74169ee)) -* add basic Forge v5 to v6 importer ([648ef333](https://github.com/electron-userland/electron-forge/commit/648ef333)) -* add basic support for non-exact Electron versions ([177012e9](https://github.com/electron-userland/electron-forge/commit/177012e9)) -* use git config to determine author before username (#920) ([57e30a47](https://github.com/electron-userland/electron-forge/commit/57e30a47)) -* add a force flag to init to allow it to overwrite an existing directory (#1020) ([dcdc2a1c](https://github.com/electron-userland/electron-forge/commit/dcdc2a1c)) -* add params to the postPackage hook (#1896) ([e9a2ba07](https://github.com/electron-userland/electron-forge/commit/e9a2ba07)) - -### Packagers - -* added maker-pkg ([8728baa1](https://github.com/electron-userland/electron-forge/commit/8728baa1)) for .pkg files on macOS -* maker-dmg: update electron-installer-dmg for new features ([766259fa](https://github.com/electron-userland/electron-forge/commit/766259fa)) -* Make autoUpdate and autoLaunch features configurable in MakerWixConfig (#2620) ([bf7d271a](https://github.com/electron-userland/electron-forge/commit/bf7d271a)) - -### Publishers - -* add publisher-nucleus to add nucleus upload support to v6 ([131665cb](https://github.com/electron-userland/electron-forge/commit/131665cb)) -* publisher-bitbucket: initial publish publisher-bitbucket (#571) ([82e8c85e](https://github.com/electron-userland/electron-forge/commit/82e8c85e)) -* publisher-github: add debug support for Octokit (#2499) ([73252c30](https://github.com/electron-userland/electron-forge/commit/73252c30)) -* publisher-github: add retry support (#2550) ([a400066d](https://github.com/electron-userland/electron-forge/commit/a400066d)) -* publisher-ers: support flavor config (#2766) ([6069ebe1](https://github.com/electron-userland/electron-forge/commit/6069ebe1)) - -### Plugins - -* plugin-local-electron: add plugin-local-electron ([8af92682](https://github.com/electron-userland/electron-forge/commit/8af92682)) -* plugin webpack - * plugin-webpack: new webpack plugin ([531d3c80](https://github.com/electron-userland/electron-forge/commit/531d3c80)) - * log out the web logger URL on start ([cdd4cde1](https://github.com/electron-userland/electron-forge/commit/cdd4cde1)) - * capture logs into web ui, handle preload scripts ([e800049b](https://github.com/electron-userland/electron-forge/commit/e800049b)) - * plugin-webpack: upgrade to webpack 4 ([8807c451](https://github.com/electron-userland/electron-forge/commit/8807c451)) - * support web workers by defining entry points without HTML files ([a85ce4eb](https://github.com/electron-userland/electron-forge/commit/a85ce4eb)) - * auto-ignore everything that is not webpack output during the webpack build. Fixes #593 ([51a22f74](https://github.com/electron-userland/electron-forge/commit/51a22f74)) - * add a barebones webpack template ([3b935c8f](https://github.com/electron-userland/electron-forge/commit/3b935c8f)) - * allow port to be configurable for web-multi-logger ([330d0f59](https://github.com/electron-userland/electron-forge/commit/330d0f59)) - * support native modules in webpack template ([ed5fd371](https://github.com/electron-userland/electron-forge/commit/ed5fd371)) - * add file-loader/style-loader for handling the static CSS file ([054a458a](https://github.com/electron-userland/electron-forge/commit/054a458a)) - * add typescript-webpack template (#1344) ([7c8259dd](https://github.com/electron-userland/electron-forge/commit/7c8259dd)) - * add template for typescript (#1319) ([cece7da7](https://github.com/electron-userland/electron-forge/commit/cece7da7)) - * add an option to export webpack compilation stats (#639) ([7275f390](https://github.com/electron-userland/electron-forge/commit/7275f390)) - * upgrade to Webpack 5 (#2225) ([564a4451](https://github.com/electron-userland/electron-forge/commit/564a4451)) - * improve native asset relocation without forking Vercel loader (#2320) ([db8a3f39](https://github.com/electron-userland/electron-forge/commit/db8a3f39)) - * add devContentSecurityPolicy config option (#2332) ([7d461090](https://github.com/electron-userland/electron-forge/commit/7d461090)) - * add nodeIntegration config for renderers (#2330) ([6e0a6248](https://github.com/electron-userland/electron-forge/commit/6e0a6248)) - * plugin-webpack: allow most webpack-dev-server options to be configurable (#2444) ([699d4862](https://github.com/electron-userland/electron-forge/commit/699d4862)) - * webpack-plugin: webpack 5 configuration factory (#2776) ([f4a77741](https://github.com/electron-userland/electron-forge/commit/f4a77741)) - * Add packageSourceMaps option to WebpackPluginConfig (#2581) ([2bb5e0d8](https://github.com/electron-userland/electron-forge/commit/2bb5e0d8)) - * allow specifing a seperate webpack config for your preload (#2679) ([f5909424](https://github.com/electron-userland/electron-forge/commit/f5909424)) - * Allow each entrypoints to specify `nodeIntegration` (#2867) ([1f45e2ca](https://github.com/electron-userland/electron-forge/commit/1f45e2ca)) -* plugin-compile: add the electron compile plugin into the monorepo ([5907de5d](https://github.com/electron-userland/electron-forge/commit/5907de5d)) -* add Electronegativity plugin (#1900) ([a6a65cae](https://github.com/electron-userland/electron-forge/commit/a6a65cae)) - -### CLI - -* cli: dont check system if the marker file is created ([ce5a4a2e](https://github.com/electron-userland/electron-forge/commit/ce5a4a2e)) -* add —inspect-brk-electron option (#1328) ([c5a6ea17](https://github.com/electron-userland/electron-forge/commit/c5a6ea17)) - -### Other - -* codebase rewritten in typescript -* add [fromBuildIdentifier](https://js.electronforge.io/classes/_electron_forge_core.ForgeUtils.html#fromBuildIdentifier): Helper for creating a dynamic config value that will get its real value based on the `buildIdentifier` in your Forge config. ([dc6c9fce](https://github.com/electron-userland/electron-forge/commit/dc6c9fce)) -* measure performance of async oras when in debug mode ([3b625ded](https://github.com/electron-userland/electron-forge/commit/3b625ded)) -* Node 8 support (#875) ([db89c4ef](https://github.com/electron-userland/electron-forge/commit/db89c4ef)) -* Various improvements for electron/template (#950) ([641f5218](https://github.com/electron-userland/electron-forge/commit/641f5218)) -* s3: add options to allow use custom instance (#1601) ([38e63d15](https://github.com/electron-userland/electron-forge/commit/38e63d15)) -* allow specifying alternative tag prefix (#2605) ([88d9d722](https://github.com/electron-userland/electron-forge/commit/88d9d722)) -* add a default preload script (#2722) ([636e2c5d](https://github.com/electron-userland/electron-forge/commit/636e2c5d)) - +- removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) +- removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) +- renamed the default repository branch from `master` to `main` ([#2946](https://github.com/electron-userland/electron-forge/commit/d28974e35b5e64aa94e6cc53dce36c8e53f5b5bf)) +- renamed `electronRebuildConfig` to `rebuildConfig` ([placeholdercommitmsg](https://github.com/electron-userland/electron-forge/pull/2963)) +- renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/commit/dba9359026b6b72479bff8133ec0c2c2e05d5595)) [Core API]: https://www.npmjs.com/package/@electron-forge/core From ae2d5ce97fa05d1339dc7dd83cfd1e49ffe567fe Mon Sep 17 00:00:00 2001 From: George Xu Date: Mon, 17 Oct 2022 10:31:45 -0700 Subject: [PATCH 05/16] add switching para --- blog/forge-v6-release.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index c3983f3c3..ad0f8817c 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -8,6 +8,9 @@ authors: - name: vertedinde url: 'https://github.com/vertedinde' image_url: 'https://github.com/vertedinde.png?size=96' + - name: erickzhao + url: 'https://github.com/erickzhao' + image_url: 'https://github.com/erickzhao.png?size=96' slug: forge-v6-release-blog --- @@ -23,7 +26,9 @@ A stable release means that we are done making major breaking changes, and that If your app already uses an existing build tooling solution that provides packaging and publishing capabilities, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. -Electron Forge will be kept up to date with the latest Electron tooling updates. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. +Electron Forge will receive features from the latest Electron tooling updates as soon as they come out. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. + +In addition, Forge was built with the intention of supporting custom plugins, makers and publishers. Forge's extensible API design means that you can write your own additional build logic for any advanced use cases that you may require. For more details, see the [Extending Electron Forge] section of the docs. ## Introducing the Webpack Plugin @@ -52,11 +57,13 @@ _A complete list of changes and commits can be found [here](https://github.com/e - renamed the default repository branch from `master` to `main` ([#2946](https://github.com/electron-userland/electron-forge/commit/d28974e35b5e64aa94e6cc53dce36c8e53f5b5bf)) - renamed `electronRebuildConfig` to `rebuildConfig` ([placeholdercommitmsg](https://github.com/electron-userland/electron-forge/pull/2963)) - renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/commit/dba9359026b6b72479bff8133ec0c2c2e05d5595)) + +## A Call to Action: +Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. You can help us improve Electron Forge by submitting feature requests, posting issues, or just letting us know your feedback! + [Core API]: https://www.npmjs.com/package/@electron-forge/core [CLI API]: https://www.npmjs.com/package/@electron-forge/cli -[webpack template]: https://www.electronforge.io/templates/webpack-template - - - +[webpack template]: https://www.electronforge.io/templates/webpack-template] +[Extending Electron Forge]: https://www.electronforge.io/advanced/extending-electron-forge From 61c7ff1160d63da673d70012bc745cbf54336255 Mon Sep 17 00:00:00 2001 From: George Xu Date: Tue, 18 Oct 2022 11:44:48 -0700 Subject: [PATCH 06/16] sentence case for headers --- blog/forge-v6-release.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index ad0f8817c..e952118a0 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -16,13 +16,13 @@ slug: forge-v6-release-blog The Electron Forge Team is excited to announce that Forge v6 is now available! This stable release contains many significant new features and improvements. Highlights of this release include the addition of our Webpack plugin as well as the introduction of the Forge Core and CLI APIs. -## What Does a Stable Release Mean? +## What does a stable release mean? During our time in a beta release state, our team has been busy refactoring Forge’s code, improving its architecture, creating new features as well as ironing out bugs and issues. A stable release means that we are done making major breaking changes, and that beta changes have been tested thoroughly both internally and through the community. -## Why Switch to Forge From an Existing Pipeline? +## Why switch to Forge from an existing pipeline? If your app already uses an existing build tooling solution that provides packaging and publishing capabilities, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. @@ -30,7 +30,7 @@ Electron Forge will receive features from the latest Electron tooling updates as In addition, Forge was built with the intention of supporting custom plugins, makers and publishers. Forge's extensible API design means that you can write your own additional build logic for any advanced use cases that you may require. For more details, see the [Extending Electron Forge] section of the docs. -## Introducing the Webpack Plugin +## Introducing the webpack plugin This release adds webpack support to your build pipeline. Webpack is a module bundler: it takes your codebase’s dependencies and modules, creates a dependency graph, and bundles them (stitching them together into a single file) into a form that your index.html can read. Bundling increases performance by reducing the number of asset calls required. @@ -42,13 +42,13 @@ The addition of webpack support brings several webpack features to your Forge ap - Adding content security policies - Native module support -## The Forge API Has Moved +## The Forge API has moved If you aren't already on the beta version of Forge, since the previous stable release the Forge v5 API has been refactored into its own separate node module. The new refactored Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. This release also adds access to the Core API from your command line interface in the form of another [CLI API]. At a high level, this is a wrapper for the Forge Core API that is accessible from the terminal. -## Breaking Changes Since Beta: +## Breaking changes since beta: _A complete list of changes and commits can be found [here](https://github.com/electron-userland/electron-forge/blob/main/CHANGELOG.md)_. @@ -58,7 +58,7 @@ _A complete list of changes and commits can be found [here](https://github.com/e - renamed `electronRebuildConfig` to `rebuildConfig` ([placeholdercommitmsg](https://github.com/electron-userland/electron-forge/pull/2963)) - renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/commit/dba9359026b6b72479bff8133ec0c2c2e05d5595)) -## A Call to Action: +## A call to action: Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. You can help us improve Electron Forge by submitting feature requests, posting issues, or just letting us know your feedback! From f0c47d215311b9e6c92b218e7afe85302181a115 Mon Sep 17 00:00:00 2001 From: George Xu Date: Mon, 24 Oct 2022 12:39:29 -0700 Subject: [PATCH 07/16] re-add migration section --- blog/forge-v6-release.md | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index e952118a0..c801948dd 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -9,11 +9,14 @@ authors: url: 'https://github.com/vertedinde' image_url: 'https://github.com/vertedinde.png?size=96' - name: erickzhao - url: 'https://github.com/erickzhao' - image_url: 'https://github.com/erickzhao.png?size=96' + url: 'https://github.com/erickzhao' + image_url: 'https://github.com/erickzhao.png?size=96' slug: forge-v6-release-blog --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + The Electron Forge Team is excited to announce that Forge v6 is now available! This stable release contains many significant new features and improvements. Highlights of this release include the addition of our Webpack plugin as well as the introduction of the Forge Core and CLI APIs. ## What does a stable release mean? @@ -48,6 +51,33 @@ If you aren't already on the beta version of Forge, since the previous stable re This release also adds access to the Core API from your command line interface in the form of another [CLI API]. At a high level, this is a wrapper for the Forge Core API that is accessible from the terminal. +## Upgrading to Forge v6 + +Forge will try to migrate from Electron Forge v5 automatically as much as possible, but some of it may need to be migrated manually. Importing your settings can be done with the same process as importing an existing Electron app to Forge: + + + + +``` + 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" +``` + + + + +Manual migration details can be found in the Forge [import documentation]. Further help can be offered in our [Discord](https://discord.gg/f4cH9BzaDw). + ## Breaking changes since beta: _A complete list of changes and commits can be found [here](https://github.com/electron-userland/electron-forge/blob/main/CHANGELOG.md)_. @@ -65,5 +95,6 @@ Tell us what you need! The Electron Forge Team is always looking to build the pr [Core API]: https://www.npmjs.com/package/@electron-forge/core [CLI API]: https://www.npmjs.com/package/@electron-forge/cli +[import documentation]: https://www.electronforge.io/import-existing-project [webpack template]: https://www.electronforge.io/templates/webpack-template] [Extending Electron Forge]: https://www.electronforge.io/advanced/extending-electron-forge From fc894c6fac16ae539f2dbdf6b1206d40685c5e16 Mon Sep 17 00:00:00 2001 From: George Xu Date: Mon, 24 Oct 2022 15:00:01 -0700 Subject: [PATCH 08/16] update breaking changes --- blog/forge-v6-release.md | 82 +++++++++++++++++++++++++++++++++++----- 1 file changed, 73 insertions(+), 9 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index c801948dd..3bcea19a3 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -29,9 +29,11 @@ A stable release means that we are done making major breaking changes, and that If your app already uses an existing build tooling solution that provides packaging and publishing capabilities, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. -Electron Forge will receive features from the latest Electron tooling updates as soon as they come out. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. +We believe there are two main advantages to using Forge: -In addition, Forge was built with the intention of supporting custom plugins, makers and publishers. Forge's extensible API design means that you can write your own additional build logic for any advanced use cases that you may require. For more details, see the [Extending Electron Forge] section of the docs. +1. *Forge receives new features for application building as soon as they are supported in Electron*. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. + +2. *Forge's multi-package architecture makes it easier to understand and extend.* Forge was built with the intention of supporting custom plugins, makers and publishers. Since Forge is made up of so many smaller packages with clear responsibilities, it is easier to follow code flow. In addition, Forge's extensible API design means that you can write your own additional build logic separate from the provided configuration options for advanced use cases. For more details on extensibility, see the [Extending Electron Forge] section of the docs, or visit the ["Why Electron Forge"](https://www.electronforge.io/core-concepts/why-electron-forge) section of our docs to learn more about the benefits that Forge offers. ## Introducing the webpack plugin @@ -78,18 +80,80 @@ Forge will try to migrate from Electron Forge v5 automatically as much as possib Manual migration details can be found in the Forge [import documentation]. Further help can be offered in our [Discord](https://discord.gg/f4cH9BzaDw). -## Breaking changes since beta: +## Breaking changes: + +Forge has spent a considerable time in beta development; this is a list of breaking changes made in recent betas, so that users who have been using the later beta versions in their apps can more easily transition to the stable release. _A complete list of changes and commits can be found [here](https://github.com/electron-userland/electron-forge/blob/main/CHANGELOG.md)_. -- removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) -- removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) -- renamed the default repository branch from `master` to `main` ([#2946](https://github.com/electron-userland/electron-forge/commit/d28974e35b5e64aa94e6cc53dce36c8e53f5b5bf)) -- renamed `electronRebuildConfig` to `rebuildConfig` ([placeholdercommitmsg](https://github.com/electron-userland/electron-forge/pull/2963)) -- renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/commit/dba9359026b6b72479bff8133ec0c2c2e05d5595)) +#### Changed plugin configuration syntax ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) + +The `plugins` array now takes objects containing an object with properties `name` and `config`, rather than tuples containing the plugin name and config. + +This aligns the syntax for this configuration with the `publishers` and `makers` arrays. + +```diff +{ + plugins: [ +- [ +- '@electron-forge/plugin-webpack', +- { /* ... */ } +- ] ++ ++ { ++ name: '@electron-forge/plugin-webpack', ++ config: { /* ... */ } ++ } + ] +} +``` + +#### Prefer forge.config.ts over package.json config ([#2991](https://github.com/electron-userland/electron-forge/commit/777197e5)) + + - This change affects the init and import commands. It changes these commands to create a forge.config.js rather than creating config.forge in your package.json. + - The internal signature of `Plugin.getHook(name)` has been changed to `Plugin.getHooks(name)` [#2995](https://github.com/electron/forge/pull/2995) as part of these changes. + - This is considered a breaking change for any third-party templates because the base template no longer sets up a config.forge object, and any template-specific mutations to the Forge config should instead be performed on the forge.config.js file. + - templates that mutated the Forge config within `package.json` will need to instantiate their own `forge.config.js` or `forge.config.ts` + +#### Upgraded Maker Wix dependency to `electron-wix-msi@5.0.0` ([3008](https://github.com/electron/forge/pull/3008))) + - This upgrade includes a rename from `appIconPath` to `icon` in the config ([#153](https://github.com/electron-userland/electron-wix-msi/pull/153)). + +#### Upgraded Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) + +#### Upgraded Package dependency to `electron-packager@17` ([#2978](https://github.com/electron-userland/electron-forge/pull/2978)) + +The upgrade to Electron Packager 17 introduces the shiny new `@electron/osx-sign` package for macOS code signing. It's a rewrite of the old `electron-osx-sign` tool with more sensible defaults. + +To migrate, we recommend seeing if the default `packagerConfig.osxSign` options work for you and tweaking the default entitlements to your needs. Otherwise, see the `@electron/osx-sign` [MIGRATION.md](https://github.com/electron/osx-sign/blob/main/MIGRATION.md) doc for a 1:1 conversion from the old config options to the new ones. + +#### Renamed Electron Rebuild config ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) + +For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `electron-rebuild` has now been shortened to `rebuildConfig`. + +```diff +{ +- electronRebuildConfig: { /* ... */ } ++ rebuildConfig: { /* ... */ } +} +``` + +#### Renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/pull/2959)) + +The field to configure `identity-validation` has now been shortened to `identityValidation`. + +```diff +{ +- identity-validation: "" ++ identityValidation: "" +} +``` + +#### removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) + +#### Removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) ## A call to action: -Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. You can help us improve Electron Forge by submitting feature requests, posting issues, or just letting us know your feedback! +Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. You can help us improve Electron Forge by submitting feature requests, posting [issues](https://github.com/electron/forge/issues), or just letting us know your feedback! From ce54770255e4568978ef1a9250efd07b407df6f5 Mon Sep 17 00:00:00 2001 From: George Xu Date: Mon, 31 Oct 2022 09:52:30 -0700 Subject: [PATCH 09/16] beef up call to action --- blog/forge-v6-release.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index 3bcea19a3..1b2a89e38 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -153,7 +153,10 @@ The field to configure `identity-validation` has now been shortened to `identity #### Removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) ## A call to action: -Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. You can help us improve Electron Forge by submitting feature requests, posting [issues](https://github.com/electron/forge/issues), or just letting us know your feedback! + +Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. + +You can help us improve Electron Forge by submitting feature requests, posting [issues](https://github.com/electron/forge/issues), or just letting us know your feedback! You can also join us in the [official Electron Discord server](https://discord.com/invite/electronjs), where there is a dedicated channel for Electron Forge. From 4f8a4f0951ee0fa3cd4377985370348116135e7e Mon Sep 17 00:00:00 2001 From: George Xu Date: Mon, 31 Oct 2022 16:48:04 -0700 Subject: [PATCH 10/16] resolve comments --- blog/forge-v6-release.md | 88 +++++++++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index 1b2a89e38..71e6358a2 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -11,51 +11,40 @@ authors: - name: erickzhao url: 'https://github.com/erickzhao' image_url: 'https://github.com/erickzhao.png?size=96' -slug: forge-v6-release-blog +slug: forge-v6-release --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -The Electron Forge Team is excited to announce that Forge v6 is now available! This stable release contains many significant new features and improvements. Highlights of this release include the addition of our Webpack plugin as well as the introduction of the Forge Core and CLI APIs. +We are excited to announce that Electron Forge v6.0.0 is now available! This release marks the first major of Forge since 2018 and moves Forge from its home in `electron-userland` into the main Electron organization on Github. Keep on reading to see what's new and how your app can adopt Electron Forge! -## What does a stable release mean? +## What is Forge? -During our time in a beta release state, our team has been busy refactoring Forge’s code, improving its architecture, creating new features as well as ironing out bugs and issues. +Electron Forge is a tool for packaging and publishing Electron applications. It unifies Electron's build tooling ecosystem into a single extensible interface so that anyone can jump right into making Electron apps. -A stable release means that we are done making major breaking changes, and that beta changes have been tested thoroughly both internally and through the community. +Visit the [Why Electron Forge] section of our docs to learn more about Forge and the benefits that it offers. -## Why switch to Forge from an existing pipeline? - -If your app already uses an existing build tooling solution that provides packaging and publishing capabilities, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. +## What does this release mean for Forge? -We believe there are two main advantages to using Forge: - -1. *Forge receives new features for application building as soon as they are supported in Electron*. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. +### A complete rewrite -2. *Forge's multi-package architecture makes it easier to understand and extend.* Forge was built with the intention of supporting custom plugins, makers and publishers. Since Forge is made up of so many smaller packages with clear responsibilities, it is easier to follow code flow. In addition, Forge's extensible API design means that you can write your own additional build logic separate from the provided configuration options for advanced use cases. For more details on extensibility, see the [Extending Electron Forge] section of the docs, or visit the ["Why Electron Forge"](https://www.electronforge.io/core-concepts/why-electron-forge) section of our docs to learn more about the benefits that Forge offers. +From v1 to v5, Electron Forge was based on the now-discontinued [`electron-compile`](https://www.npmjs.com/package/electron-compile) project. Forge v6 is a complete rewrite of the project with a new modular architecture that can be extended to meet any Electron application's needs. In the past few years, Forge v6.0.0-beta has achieved feature parity with v5 and code churn has slowed down dramatically, making the tool ready for general adoption. -## Introducing the webpack plugin - -This release adds webpack support to your build pipeline. Webpack is a module bundler: it takes your codebase’s dependencies and modules, creates a dependency graph, and bundles them (stitching them together into a single file) into a form that your index.html can read. Bundling increases performance by reducing the number of asset calls required. - -Forge v6 comes with a [webpack template] that makes use of the new `@electron-forge/plugin-webpack` module, plus some preset Webpack configuration options. Configuration instructions can be found in the [docs](https://www.electronforge.io/config/plugins/webpack). +### Making it official -The addition of webpack support brings several webpack features to your Forge app. Notable features include but are not limited to: -- Hot module reloading -- DevServer support -- Adding content security policies -- Native module support +Historically, the Electron project has been unopinionated about build tooling, leaving the task to various community-maintained packages. However, with Electron maturing as a project, it has become harder for new Electron developers to understand which tools they need to build and distribute their apps to users. +To help guide Electron developers in the distribution process, **we have have decided to make Forge the official batteries-included build pipeline for Electron**. Over the past year, we have been slowly integrating Forge into the official Electron documentation, and we have most recently moved Forge over from its old home in electron-userland/electron-forge to the [electron/forge](https://github.com/electron/forge) repo. -## The Forge API has moved +## Installing / upgrading to Forge v6 -If you aren't already on the beta version of Forge, since the previous stable release the Forge v5 API has been refactored into its own separate node module. The new refactored Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. +:::info -This release also adds access to the Core API from your command line interface in the form of another [CLI API]. At a high level, this is a wrapper for the Forge Core API that is accessible from the terminal. +This section assumes you have a pre-existing project. If you are looking to get started with a new Forge project, head on to the [Getting Started] section in the docs. -## Upgrading to Forge v6 +::: -Forge will try to migrate from Electron Forge v5 automatically as much as possible, but some of it may need to be migrated manually. Importing your settings can be done with the same process as importing an existing Electron app to Forge: +Forge will try to migrate from Electron Forge v5 automatically as much as possible using the same process as importing an existing Electron app to Forge. Some of it may need to be migrated manually. Importing your settings can be done using the [CLI API] node module, which at a high level is a wrapper for the Forge [Core API] that is accessible from the terminal. @@ -80,6 +69,32 @@ Forge will try to migrate from Electron Forge v5 automatically as much as possib Manual migration details can be found in the Forge [import documentation]. Further help can be offered in our [Discord](https://discord.gg/f4cH9BzaDw). +## Why switch to Forge from an existing pipeline? + +If your app already uses an existing build tooling solution that provides packaging and publishing capabilities, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. + +We believe there are two main advantages to using Forge: + +1. *Forge receives new features for application building as soon as they are supported in Electron*. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. + +1. *Forge's multi-package architecture makes it easy to understand and extend.* Forge was built with the intention of supporting custom plugins, makers and publishers. Since Forge is made up of many smaller packages with clear responsibilities, it is easier to follow code flow. In addition, Forge's extensible API design means that you can write your own additional build logic separate from the provided configuration options for advanced use cases. For more details on extensibility, see the [Extending Electron Forge] section of the docs. + +## Introducing the webpack plugin + +This release adds webpack support to your build pipeline. Webpack is a module bundler: it takes your codebase’s dependencies and modules, creates a dependency graph, and bundles them (stitching them together into a single file) into a form that your index.html can read. Bundling increases performance by reducing the number of asset calls required. + +Forge v6 comes with a [webpack template] that makes use of the new `@electron-forge/plugin-webpack` module, plus some preset Webpack configuration options. Configuration instructions can be found in the [docs](https://www.electronforge.io/config/plugins/webpack). + +The addition of webpack support brings several webpack features to your Forge app. Notable features include but are not limited to: +- Hot module reloading +- DevServer support +- Adding content security policies +- Native module support + +## The Forge API has moved + +If you aren't already on the beta version of Forge, the Forge v5 API has been refactored into its own separate node module in Forge v6. The new Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. + ## Breaking changes: Forge has spent a considerable time in beta development; this is a list of breaking changes made in recent betas, so that users who have been using the later beta versions in their apps can more easily transition to the stable release. @@ -108,7 +123,7 @@ This aligns the syntax for this configuration with the `publishers` and `makers` } ``` -#### Prefer forge.config.ts over package.json config ([#2991](https://github.com/electron-userland/electron-forge/commit/777197e5)) +#### Prefer forge.config.js over package.json config ([#2991](https://github.com/electron-userland/electron-forge/commit/777197e5)) - This change affects the init and import commands. It changes these commands to create a forge.config.js rather than creating config.forge in your package.json. - The internal signature of `Plugin.getHook(name)` has been changed to `Plugin.getHooks(name)` [#2995](https://github.com/electron/forge/pull/2995) as part of these changes. @@ -118,9 +133,9 @@ This aligns the syntax for this configuration with the `publishers` and `makers` #### Upgraded Maker Wix dependency to `electron-wix-msi@5.0.0` ([3008](https://github.com/electron/forge/pull/3008))) - This upgrade includes a rename from `appIconPath` to `icon` in the config ([#153](https://github.com/electron-userland/electron-wix-msi/pull/153)). -#### Upgraded Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) +#### Upgraded required Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) -#### Upgraded Package dependency to `electron-packager@17` ([#2978](https://github.com/electron-userland/electron-forge/pull/2978)) +#### Upgraded package dependency to `electron-packager@17` ([#2978](https://github.com/electron-userland/electron-forge/pull/2978)) The upgrade to Electron Packager 17 introduces the shiny new `@electron/osx-sign` package for macOS code signing. It's a rewrite of the old `electron-osx-sign` tool with more sensible defaults. @@ -128,7 +143,7 @@ To migrate, we recommend seeing if the default `packagerConfig.osxSign` options #### Renamed Electron Rebuild config ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) -For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `electron-rebuild` has now been shortened to `rebuildConfig`. +For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `@electron/rebuild` has now been shortened to `rebuildConfig`. ```diff { @@ -140,7 +155,7 @@ For consistency with the `packagerConfig` option for `electron-packager`, the fi #### Renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/pull/2959)) The field to configure `identity-validation` has now been shortened to `identityValidation`. - +1 ```diff { - identity-validation: "" @@ -148,7 +163,11 @@ The field to configure `identity-validation` has now been shortened to `identity } ``` -#### removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) +#### Removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) + +- this has been removed in favor of the [Webpack + TypeScript Template]. + +#### Removed `lint` command ([#2964](https://github.com/electron/forge/pull/2964)) #### Removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) @@ -162,6 +181,9 @@ You can help us improve Electron Forge by submitting feature requests, posting [ [Core API]: https://www.npmjs.com/package/@electron-forge/core [CLI API]: https://www.npmjs.com/package/@electron-forge/cli +[Getting Started]: https://www.electronforge.io/ [import documentation]: https://www.electronforge.io/import-existing-project [webpack template]: https://www.electronforge.io/templates/webpack-template] [Extending Electron Forge]: https://www.electronforge.io/advanced/extending-electron-forge +[TypeScript + webpack template]: https://www.electronforge.io/templates/typescript-+-webpack-template +[Why Electron Forge]: https://www.electronforge.io/core-concepts/why-electron-forge \ No newline at end of file From 8fce9e4032d1be3218c8a1adac5f78dd82c46ffd Mon Sep 17 00:00:00 2001 From: George Xu Date: Tue, 1 Nov 2022 10:25:35 -0700 Subject: [PATCH 11/16] another round of edits --- blog/forge-v6-release.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index 71e6358a2..ff8ed6c00 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -21,9 +21,10 @@ We are excited to announce that Electron Forge v6.0.0 is now available! This rel ## What is Forge? -Electron Forge is a tool for packaging and publishing Electron applications. It unifies Electron's build tooling ecosystem into a single extensible interface so that anyone can jump right into making Electron apps. +Electron Forge is a tool for packaging and publishing Electron applications. It unifies Electron's build tooling ecosystem into a single extensible interface so that anyone can jump right into making Electron apps. Forge comes with customizable flows to package +and sign your app, bundle it into distributable formats for each target platform and architecture, as well as publish it online for your users. -Visit the [Why Electron Forge] section of our docs to learn more about Forge and the benefits that it offers. +Visit the [Why Electron Forge] section of its documentation to learn more. ## What does this release mean for Forge? @@ -36,20 +37,18 @@ From v1 to v5, Electron Forge was based on the now-discontinued [`electron-compi Historically, the Electron project has been unopinionated about build tooling, leaving the task to various community-maintained packages. However, with Electron maturing as a project, it has become harder for new Electron developers to understand which tools they need to build and distribute their apps to users. To help guide Electron developers in the distribution process, **we have have decided to make Forge the official batteries-included build pipeline for Electron**. Over the past year, we have been slowly integrating Forge into the official Electron documentation, and we have most recently moved Forge over from its old home in electron-userland/electron-forge to the [electron/forge](https://github.com/electron/forge) repo. -## Installing / upgrading to Forge v6 +## Installing Forge v6 :::info -This section assumes you have a pre-existing project. If you are looking to get started with a new Forge project, head on to the [Getting Started] section in the docs. +This section assumes you have an existing Electron app and want to migrate your pipelie to Electron Forge. If you are looking to bootstrap a new Electron project with Forge, head on to the [Getting Started] section in the docs. ::: -Forge will try to migrate from Electron Forge v5 automatically as much as possible using the same process as importing an existing Electron app to Forge. Some of it may need to be migrated manually. Importing your settings can be done using the [CLI API] node module, which at a high level is a wrapper for the Forge [Core API] that is accessible from the terminal. - -``` +```bash cd my-app yarn add --dev @electron-forge/cli yarn electron-forge import @@ -58,7 +57,7 @@ Forge will try to migrate from Electron Forge v5 automatically as much as possib -``` +```bash cd my-app npm install --save-dev @electron-forge/cli npm exec --package=@electron-forge/cli -c "electron-forge import" @@ -67,15 +66,17 @@ Forge will try to migrate from Electron Forge v5 automatically as much as possib -Manual migration details can be found in the Forge [import documentation]. Further help can be offered in our [Discord](https://discord.gg/f4cH9BzaDw). +When you use the `import` command, Electron Forge will add a few core dependencies and create a new `forge.config.js` configuration. If you have any existing build tooling (e.g. Electron Packager, Electron Builder, Forge v5), it will try to migrate as many settings as possible. Some of your existing configuration may need to be migrated manually. + +Manual migration details can be found in the Forge [import documentation]. If you need help, please stop by the Electron [Discord](https://discord.gg/f4cH9BzaDw) server. ## Why switch to Forge from an existing pipeline? -If your app already uses an existing build tooling solution that provides packaging and publishing capabilities, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. +If you already have tooling for packaging and publishing your electron app, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. -We believe there are two main advantages to using Forge: +We believe there are two main benefits to using Forge: -1. *Forge receives new features for application building as soon as they are supported in Electron*. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. This reduction in the burden of maintenance for Forge applications has already been observed when Electron released `@electron/universal` [support](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity), which were features that Forge supported out of the box. +1. *Forge receives new features for application building as soon as they are supported in Electron*. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. For recent examples, see [`@electron/universal`](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity). 1. *Forge's multi-package architecture makes it easy to understand and extend.* Forge was built with the intention of supporting custom plugins, makers and publishers. Since Forge is made up of many smaller packages with clear responsibilities, it is easier to follow code flow. In addition, Forge's extensible API design means that you can write your own additional build logic separate from the provided configuration options for advanced use cases. For more details on extensibility, see the [Extending Electron Forge] section of the docs. From 5a7bb5ee6678b01f0633bc194955c7832cf3bab1 Mon Sep 17 00:00:00 2001 From: George Xu Date: Tue, 1 Nov 2022 15:19:43 -0700 Subject: [PATCH 12/16] add init section --- blog/forge-v6-release.md | 80 +++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 33 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index ff8ed6c00..e1b2a86f1 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -37,13 +37,43 @@ From v1 to v5, Electron Forge was based on the now-discontinued [`electron-compi Historically, the Electron project has been unopinionated about build tooling, leaving the task to various community-maintained packages. However, with Electron maturing as a project, it has become harder for new Electron developers to understand which tools they need to build and distribute their apps to users. To help guide Electron developers in the distribution process, **we have have decided to make Forge the official batteries-included build pipeline for Electron**. Over the past year, we have been slowly integrating Forge into the official Electron documentation, and we have most recently moved Forge over from its old home in electron-userland/electron-forge to the [electron/forge](https://github.com/electron/forge) repo. -## Installing Forge v6 +## Initializing a new Electron project with Forge v6 -:::info +Getting started with Electron Forge can be done easily with the following commands: -This section assumes you have an existing Electron app and want to migrate your pipelie to Electron Forge. If you are looking to bootstrap a new Electron project with Forge, head on to the [Getting Started] section in the docs. + + + +```bash + yarn create electron-app my-app --template=webpack + cd my-app + yarn start +``` + + + + +```bash + npx create-electron-app@latest my-app --template=webpack + cd my-app + npm start +``` -::: + + + +These commands will yield a directory called `my-app` with some Electron app boilerplate inside. We have also slipped in a `--template=webpack` option into the initialization command, which adds some preset webpack configuration options to your project. If you head into the `my-app` directory and start up the app, you'll be all set to start developing. Running the `make` command after these steps will package your Electron app into platform specific distributables for you to share with the world. For more information on how to get started, visit the [Getting Started] section in the docs. + +### Introducing the webpack plugin + +This release adds webpack support to your build pipeline via the new `@electron-forge/plugin-webpack` module. To get you up and running as fast as possible, Forge v6 comes with a [webpack template], which we have slipped into the initialization commands above. This will add some preset webpack configuration options to your project. + +This plugin integrates webpack with Electron Forge in a few ways, including: +- Enhancing the local development flow with `webpack-dev-server`, including support for Hot Module Replacement in the renderer, +- Handling build logic for webpack bundles before the Package step, and, +- Adding support for Native Node modules in the webpack bundling process. + +## Importing an existing project into Forge v6 @@ -80,29 +110,13 @@ We believe there are two main benefits to using Forge: 1. *Forge's multi-package architecture makes it easy to understand and extend.* Forge was built with the intention of supporting custom plugins, makers and publishers. Since Forge is made up of many smaller packages with clear responsibilities, it is easier to follow code flow. In addition, Forge's extensible API design means that you can write your own additional build logic separate from the provided configuration options for advanced use cases. For more details on extensibility, see the [Extending Electron Forge] section of the docs. -## Introducing the webpack plugin - -This release adds webpack support to your build pipeline. Webpack is a module bundler: it takes your codebase’s dependencies and modules, creates a dependency graph, and bundles them (stitching them together into a single file) into a form that your index.html can read. Bundling increases performance by reducing the number of asset calls required. - -Forge v6 comes with a [webpack template] that makes use of the new `@electron-forge/plugin-webpack` module, plus some preset Webpack configuration options. Configuration instructions can be found in the [docs](https://www.electronforge.io/config/plugins/webpack). - -The addition of webpack support brings several webpack features to your Forge app. Notable features include but are not limited to: -- Hot module reloading -- DevServer support -- Adding content security policies -- Native module support - -## The Forge API has moved - -If you aren't already on the beta version of Forge, the Forge v5 API has been refactored into its own separate node module in Forge v6. The new Forge [Core API] exposes the v5 Forge API methods as well as a number of utility functions to Node, allowing you call them from within your own code. - -## Breaking changes: +## Breaking changes -Forge has spent a considerable time in beta development; this is a list of breaking changes made in recent betas, so that users who have been using the later beta versions in their apps can more easily transition to the stable release. +Forge has spent a considerable time in beta development; this is a list of breaking changes made in recent betas (>= 6.0.0-beta.69), so that users who have been using the later beta versions in their apps can more easily transition to the stable release. _A complete list of changes and commits can be found [here](https://github.com/electron-userland/electron-forge/blob/main/CHANGELOG.md)_. -#### Changed plugin configuration syntax ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) +### Changed plugin configuration syntax ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) The `plugins` array now takes objects containing an object with properties `name` and `config`, rather than tuples containing the plugin name and config. @@ -124,25 +138,25 @@ This aligns the syntax for this configuration with the `publishers` and `makers` } ``` -#### Prefer forge.config.js over package.json config ([#2991](https://github.com/electron-userland/electron-forge/commit/777197e5)) +### Prefer forge.config.js over package.json config ([#2991](https://github.com/electron-userland/electron-forge/commit/777197e5)) - This change affects the init and import commands. It changes these commands to create a forge.config.js rather than creating config.forge in your package.json. - The internal signature of `Plugin.getHook(name)` has been changed to `Plugin.getHooks(name)` [#2995](https://github.com/electron/forge/pull/2995) as part of these changes. - This is considered a breaking change for any third-party templates because the base template no longer sets up a config.forge object, and any template-specific mutations to the Forge config should instead be performed on the forge.config.js file. - templates that mutated the Forge config within `package.json` will need to instantiate their own `forge.config.js` or `forge.config.ts` -#### Upgraded Maker Wix dependency to `electron-wix-msi@5.0.0` ([3008](https://github.com/electron/forge/pull/3008))) +### Upgraded Maker Wix dependency to `electron-wix-msi@5.0.0` ([3008](https://github.com/electron/forge/pull/3008))) - This upgrade includes a rename from `appIconPath` to `icon` in the config ([#153](https://github.com/electron-userland/electron-wix-msi/pull/153)). -#### Upgraded required Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) +### Upgraded required Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) -#### Upgraded package dependency to `electron-packager@17` ([#2978](https://github.com/electron-userland/electron-forge/pull/2978)) +### Upgraded package dependency to `electron-packager@17` ([#2978](https://github.com/electron-userland/electron-forge/pull/2978)) The upgrade to Electron Packager 17 introduces the shiny new `@electron/osx-sign` package for macOS code signing. It's a rewrite of the old `electron-osx-sign` tool with more sensible defaults. To migrate, we recommend seeing if the default `packagerConfig.osxSign` options work for you and tweaking the default entitlements to your needs. Otherwise, see the `@electron/osx-sign` [MIGRATION.md](https://github.com/electron/osx-sign/blob/main/MIGRATION.md) doc for a 1:1 conversion from the old config options to the new ones. -#### Renamed Electron Rebuild config ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) +### Renamed Electron Rebuild config ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `@electron/rebuild` has now been shortened to `rebuildConfig`. @@ -153,7 +167,7 @@ For consistency with the `packagerConfig` option for `electron-packager`, the fi } ``` -#### Renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/pull/2959)) +### Renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/pull/2959)) The field to configure `identity-validation` has now been shortened to `identityValidation`. 1 @@ -164,13 +178,13 @@ The field to configure `identity-validation` has now been shortened to `identity } ``` -#### Removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) +### Removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) - this has been removed in favor of the [Webpack + TypeScript Template]. -#### Removed `lint` command ([#2964](https://github.com/electron/forge/pull/2964)) +### Removed `lint` command ([#2964](https://github.com/electron/forge/pull/2964)) -#### Removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) +### Removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) ## A call to action: @@ -187,4 +201,4 @@ You can help us improve Electron Forge by submitting feature requests, posting [ [webpack template]: https://www.electronforge.io/templates/webpack-template] [Extending Electron Forge]: https://www.electronforge.io/advanced/extending-electron-forge [TypeScript + webpack template]: https://www.electronforge.io/templates/typescript-+-webpack-template -[Why Electron Forge]: https://www.electronforge.io/core-concepts/why-electron-forge \ No newline at end of file +[Why Electron Forge]: https://www.electronforge.io/core-concepts/why-electron-forge From 73c451d4a584274e9fe27198a9952d3147602166 Mon Sep 17 00:00:00 2001 From: George Xu Date: Tue, 1 Nov 2022 23:29:24 -0700 Subject: [PATCH 13/16] docs: move identityValidation rename to be logically cohesive with osx-sign changes --- blog/forge-v6-release.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index e1b2a86f1..1479a7a1d 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -69,9 +69,9 @@ These commands will yield a directory called `my-app` with some Electron app boi This release adds webpack support to your build pipeline via the new `@electron-forge/plugin-webpack` module. To get you up and running as fast as possible, Forge v6 comes with a [webpack template], which we have slipped into the initialization commands above. This will add some preset webpack configuration options to your project. This plugin integrates webpack with Electron Forge in a few ways, including: -- Enhancing the local development flow with `webpack-dev-server`, including support for Hot Module Replacement in the renderer, -- Handling build logic for webpack bundles before the Package step, and, -- Adding support for Native Node modules in the webpack bundling process. +- enhancing the local development flow with webpack-dev-server, including support for Hot Module Replacement in the renderer; +- handling build logic for webpack bundles before the Package step; and +- adding support for Native Node modules in the webpack bundling process. ## Importing an existing project into Forge v6 @@ -156,25 +156,25 @@ The upgrade to Electron Packager 17 introduces the shiny new `@electron/osx-sign To migrate, we recommend seeing if the default `packagerConfig.osxSign` options work for you and tweaking the default entitlements to your needs. Otherwise, see the `@electron/osx-sign` [MIGRATION.md](https://github.com/electron/osx-sign/blob/main/MIGRATION.md) doc for a 1:1 conversion from the old config options to the new ones. -### Renamed Electron Rebuild config ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) +#### Renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/pull/2959)) -For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `@electron/rebuild` has now been shortened to `rebuildConfig`. +The field to configure `identity-validation` has now been shortened to `identityValidation`, as part of the switch to using `@electron/osx-sign`. -```diff +```diff title=config.forge.packagerConfig.osxSign" { -- electronRebuildConfig: { /* ... */ } -+ rebuildConfig: { /* ... */ } +- identity-validation: "" ++ identityValidation: "" } ``` -### Renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/pull/2959)) +### Renamed Electron Rebuild config ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) + +For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `@electron/rebuild` has now been shortened to `rebuildConfig`. -The field to configure `identity-validation` has now been shortened to `identityValidation`. -1 ```diff { -- identity-validation: "" -+ identityValidation: "" +- electronRebuildConfig: { /* ... */ } ++ rebuildConfig: { /* ... */ } } ``` @@ -186,7 +186,7 @@ The field to configure `identity-validation` has now been shortened to `identity ### Removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) -## A call to action: +## Submit your feedback!: Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. From 9efdbcd0d0fc9317aa4edd26d4fcacd0758adcff Mon Sep 17 00:00:00 2001 From: George Xu Date: Wed, 2 Nov 2022 10:25:31 -0700 Subject: [PATCH 14/16] reformat breaking changes --- blog/forge-v6-release.md | 66 ++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index 1479a7a1d..ec6a34100 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -112,11 +112,11 @@ We believe there are two main benefits to using Forge: ## Breaking changes -Forge has spent a considerable time in beta development; this is a list of breaking changes made in recent betas (>= 6.0.0-beta.69), so that users who have been using the later beta versions in their apps can more easily transition to the stable release. +Forge has spent a considerable time in beta development; this is a list of breaking changes made in recent betas (>= 6.0.0-beta.65), so that users who have been using the later beta versions in their apps can more easily transition to the stable release. -_A complete list of changes and commits can be found [here](https://github.com/electron-userland/electron-forge/blob/main/CHANGELOG.md)_. +_A complete list of changes and commits can be found [here](https://github.com/electron/forge/blob/main/CHANGELOG.md)_. -### Changed plugin configuration syntax ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) +### Config: Changed `plugins` syntax ([#2963](https://github.com/electron/forge/pull/2963)) The `plugins` array now takes objects containing an object with properties `name` and `config`, rather than tuples containing the plugin name and config. @@ -138,36 +138,16 @@ This aligns the syntax for this configuration with the `publishers` and `makers` } ``` -### Prefer forge.config.js over package.json config ([#2991](https://github.com/electron-userland/electron-forge/commit/777197e5)) +### Config: Prefer `forge.config.js` for new Forge projects ([#2991](https://github.com/electron/forge/commit/777197e5)) [#2995](https://github.com/electron/forge/pull/2995) - - This change affects the init and import commands. It changes these commands to create a forge.config.js rather than creating config.forge in your package.json. - - The internal signature of `Plugin.getHook(name)` has been changed to `Plugin.getHooks(name)` [#2995](https://github.com/electron/forge/pull/2995) as part of these changes. - - This is considered a breaking change for any third-party templates because the base template no longer sets up a config.forge object, and any template-specific mutations to the Forge config should instead be performed on the forge.config.js file. - - templates that mutated the Forge config within `package.json` will need to instantiate their own `forge.config.js` or `forge.config.ts` +We have changed the `electron-forge init` and `electron-forge import` commands to create a JavaScript config file rather than a section in `package.json`. This is to better +support dynamic build logic that isn't possible with the JSON format. Forge now has better support for alternate configuration syntaxes via [rechoir](https://github.com/gulpjs/rechoir). -### Upgraded Maker Wix dependency to `electron-wix-msi@5.0.0` ([3008](https://github.com/electron/forge/pull/3008))) - - This upgrade includes a rename from `appIconPath` to `icon` in the config ([#153](https://github.com/electron-userland/electron-wix-msi/pull/153)). - -### Upgraded required Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) - -### Upgraded package dependency to `electron-packager@17` ([#2978](https://github.com/electron-userland/electron-forge/pull/2978)) - -The upgrade to Electron Packager 17 introduces the shiny new `@electron/osx-sign` package for macOS code signing. It's a rewrite of the old `electron-osx-sign` tool with more sensible defaults. - -To migrate, we recommend seeing if the default `packagerConfig.osxSign` options work for you and tweaking the default entitlements to your needs. Otherwise, see the `@electron/osx-sign` [MIGRATION.md](https://github.com/electron/osx-sign/blob/main/MIGRATION.md) doc for a 1:1 conversion from the old config options to the new ones. - -#### Renamed `identity-validation` to`identityValidation` ([#2959](https://github.com/electron-userland/electron-forge/pull/2959)) - -The field to configure `identity-validation` has now been shortened to `identityValidation`, as part of the switch to using `@electron/osx-sign`. - -```diff title=config.forge.packagerConfig.osxSign" -{ -- identity-validation: "" -+ identityValidation: "" -} -``` - -### Renamed Electron Rebuild config ([#2963](https://github.com/electron-userland/electron-forge/pull/2963)) +This is a breaking change for any existing third-party templates and plugins: +- The internal signature of `Plugin.getHook(name)` has changed to `Plugin.getHooks().name`. +- Templates that mutated the Forge config within `package.json` will need to instantiate their own `forge.config.js` or `forge.config.ts` + +### Config: Renamed Electron Rebuild config ([#2963](https://github.com/electron/forge/pull/2963)) For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `@electron/rebuild` has now been shortened to `rebuildConfig`. @@ -178,15 +158,29 @@ For consistency with the `packagerConfig` option for `electron-packager`, the fi } ``` -### Removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron-userland/electron-forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) +### Config: Renamed `ElectronRebuildConfig` ([#2963](https://github.com/electron/forge/pull/2963)) + + Removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron/forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) + +This has been removed in favor of the [Webpack + TypeScript Template]. + +### Maker: Upgraded Maker Wix dependency to `electron-wix-msi@5.0.0` ([3008](https://github.com/electron/forge/pull/3008))) + +This upgrade includes a rename from `appIconPath` to `icon` in the config ([#153](https://github.com/electron/forge/pull/153)). This aligns WiX MSI's icon config with the other makers. -- this has been removed in favor of the [Webpack + TypeScript Template]. +### Build: Upgraded required Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) + +### Package: Upgraded package dependency to `electron-packager@17` ([#2978](https://github.com/electron/forge/pull/2978)) + +The upgrade to Electron Packager 17 introduces the shiny new `@electron/osx-sign` package for macOS code signing. It's a rewrite of the old `electron-osx-sign` tool with more sensible defaults. + +To migrate, we recommend seeing if the default `packagerConfig.osxSign` options work for you and tweaking the default entitlements to your needs. Otherwise, see the `@electron/osx-sign` [MIGRATION.md](https://github.com/electron/osx-sign/blob/main/MIGRATION.md) doc for a 1:1 conversion from the old config options to the new ones. -### Removed `lint` command ([#2964](https://github.com/electron/forge/pull/2964)) +### Command: Removed `lint` command ([#2964](https://github.com/electron/forge/pull/2964)) -### Removed `install` command ([#2958](https://github.com/electron-userland/electron-forge/commit/6b215b0c1d91c998bb2ab953b502e87868527ed9)) +### Command: Removed `install` command ([#2958](https://github.com/electron/forge/pull/2958)) -## Submit your feedback!: +## Submit your feedback! Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. From 01665d1826f316f2f9a5231b675038c551f0fab5 Mon Sep 17 00:00:00 2001 From: George Xu Date: Wed, 2 Nov 2022 10:43:55 -0700 Subject: [PATCH 15/16] remove dead links --- blog/forge-v6-release.md | 95 ++++++---------------------------------- 1 file changed, 14 insertions(+), 81 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index ec6a34100..de7b4075f 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -1,6 +1,6 @@ --- title: Electron Forge v6.0.0 -date: 2022-10-26T00:00:00.000Z +date: 2022-11-03T00:00:00.000Z authors: - name: georgexu99 url: 'https://github.com/georgexu99' @@ -45,18 +45,18 @@ Getting started with Electron Forge can be done easily with the following comman ```bash - yarn create electron-app my-app --template=webpack - cd my-app - yarn start + yarn create electron-app my-app --template=webpack + cd my-app + yarn start ``` ```bash - npx create-electron-app@latest my-app --template=webpack - cd my-app - npm start + npx create-electron-app@latest my-app --template=webpack + cd my-app + npm start ``` @@ -79,18 +79,18 @@ This plugin integrates webpack with Electron Forge in a few ways, including: ```bash - cd my-app - yarn add --dev @electron-forge/cli - yarn electron-forge import + cd my-app + yarn add --dev @electron-forge/cli + yarn electron-forge import ``` ```bash - cd my-app - npm install --save-dev @electron-forge/cli - npm exec --package=@electron-forge/cli -c "electron-forge import" + cd my-app + npm install --save-dev @electron-forge/cli + npm exec --package=@electron-forge/cli -c "electron-forge import" ``` @@ -112,74 +112,10 @@ We believe there are two main benefits to using Forge: ## Breaking changes -Forge has spent a considerable time in beta development; this is a list of breaking changes made in recent betas (>= 6.0.0-beta.65), so that users who have been using the later beta versions in their apps can more easily transition to the stable release. +Forge has spent a considerable time in beta development; [this is a list of breaking changes made in recent betas (>= 6.0.0-beta.65)](https://github.com/electron/forge/releases/tag/v6.0.0), so that users who have been using the later beta versions in their apps can more easily transition to the stable release. _A complete list of changes and commits can be found [here](https://github.com/electron/forge/blob/main/CHANGELOG.md)_. -### Config: Changed `plugins` syntax ([#2963](https://github.com/electron/forge/pull/2963)) - -The `plugins` array now takes objects containing an object with properties `name` and `config`, rather than tuples containing the plugin name and config. - -This aligns the syntax for this configuration with the `publishers` and `makers` arrays. - -```diff -{ - plugins: [ -- [ -- '@electron-forge/plugin-webpack', -- { /* ... */ } -- ] -+ -+ { -+ name: '@electron-forge/plugin-webpack', -+ config: { /* ... */ } -+ } - ] -} -``` - -### Config: Prefer `forge.config.js` for new Forge projects ([#2991](https://github.com/electron/forge/commit/777197e5)) [#2995](https://github.com/electron/forge/pull/2995) - -We have changed the `electron-forge init` and `electron-forge import` commands to create a JavaScript config file rather than a section in `package.json`. This is to better -support dynamic build logic that isn't possible with the JSON format. Forge now has better support for alternate configuration syntaxes via [rechoir](https://github.com/gulpjs/rechoir). - -This is a breaking change for any existing third-party templates and plugins: -- The internal signature of `Plugin.getHook(name)` has changed to `Plugin.getHooks().name`. -- Templates that mutated the Forge config within `package.json` will need to instantiate their own `forge.config.js` or `forge.config.ts` - -### Config: Renamed Electron Rebuild config ([#2963](https://github.com/electron/forge/pull/2963)) - -For consistency with the `packagerConfig` option for `electron-packager`, the field to configure `@electron/rebuild` has now been shortened to `rebuildConfig`. - -```diff -{ -- electronRebuildConfig: { /* ... */ } -+ rebuildConfig: { /* ... */ } -} -``` - -### Config: Renamed `ElectronRebuildConfig` ([#2963](https://github.com/electron/forge/pull/2963)) - - Removed `@electron-forge/template-typescript` template ([#2948](https://github.com/electron/forge/commit/fc9421d513300b98c987af41ae71cb5d7e696fd1)) - -This has been removed in favor of the [Webpack + TypeScript Template]. - -### Maker: Upgraded Maker Wix dependency to `electron-wix-msi@5.0.0` ([3008](https://github.com/electron/forge/pull/3008))) - -This upgrade includes a rename from `appIconPath` to `icon` in the config ([#153](https://github.com/electron/forge/pull/153)). This aligns WiX MSI's icon config with the other makers. - -### Build: Upgraded required Node.js to 14 LTS ([#2921](https://github.com/electron/forge/pull/2921)) - -### Package: Upgraded package dependency to `electron-packager@17` ([#2978](https://github.com/electron/forge/pull/2978)) - -The upgrade to Electron Packager 17 introduces the shiny new `@electron/osx-sign` package for macOS code signing. It's a rewrite of the old `electron-osx-sign` tool with more sensible defaults. - -To migrate, we recommend seeing if the default `packagerConfig.osxSign` options work for you and tweaking the default entitlements to your needs. Otherwise, see the `@electron/osx-sign` [MIGRATION.md](https://github.com/electron/osx-sign/blob/main/MIGRATION.md) doc for a 1:1 conversion from the old config options to the new ones. - -### Command: Removed `lint` command ([#2964](https://github.com/electron/forge/pull/2964)) - -### Command: Removed `install` command ([#2958](https://github.com/electron/forge/pull/2958)) - ## Submit your feedback! Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. @@ -188,11 +124,8 @@ You can help us improve Electron Forge by submitting feature requests, posting [ -[Core API]: https://www.npmjs.com/package/@electron-forge/core -[CLI API]: https://www.npmjs.com/package/@electron-forge/cli [Getting Started]: https://www.electronforge.io/ [import documentation]: https://www.electronforge.io/import-existing-project [webpack template]: https://www.electronforge.io/templates/webpack-template] [Extending Electron Forge]: https://www.electronforge.io/advanced/extending-electron-forge -[TypeScript + webpack template]: https://www.electronforge.io/templates/typescript-+-webpack-template [Why Electron Forge]: https://www.electronforge.io/core-concepts/why-electron-forge From 267553bebcbd2060f4dd8998c0d8e47a7fa8a320 Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Wed, 2 Nov 2022 21:52:29 -0700 Subject: [PATCH 16/16] final pass --- blog/forge-v6-release.md | 140 +++++++++++++++++++++++++-------------- 1 file changed, 92 insertions(+), 48 deletions(-) diff --git a/blog/forge-v6-release.md b/blog/forge-v6-release.md index de7b4075f..110ccc1d5 100644 --- a/blog/forge-v6-release.md +++ b/blog/forge-v6-release.md @@ -1,5 +1,5 @@ --- -title: Electron Forge v6.0.0 +title: Introducing Electron Forge 6 date: 2022-11-03T00:00:00.000Z authors: - name: georgexu99 @@ -12,120 +12,164 @@ authors: url: 'https://github.com/erickzhao' image_url: 'https://github.com/erickzhao.png?size=96' slug: forge-v6-release +toc_max_heading_level: 3 --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -We are excited to announce that Electron Forge v6.0.0 is now available! This release marks the first major of Forge since 2018 and moves Forge from its home in `electron-userland` into the main Electron organization on Github. Keep on reading to see what's new and how your app can adopt Electron Forge! +We are excited to announce that Electron Forge v6.0.0 is now available! This release marks the first major release of Forge since 2018 and moves the project from `electron-userland` into the main `electron` organization on Github. -## What is Forge? +Keep on reading to see what's new and how your app can adopt Electron Forge! -Electron Forge is a tool for packaging and publishing Electron applications. It unifies Electron's build tooling ecosystem into a single extensible interface so that anyone can jump right into making Electron apps. Forge comes with customizable flows to package -and sign your app, bundle it into distributable formats for each target platform and architecture, as well as publish it online for your users. +## What is Electron Forge? -Visit the [Why Electron Forge] section of its documentation to learn more. +[Electron Forge](https://electronforge.io) is a tool for packaging and distributing Electron applications. It unifies Electron's build tooling ecosystem into a single extensible interface so that anyone can jump right into making Electron apps. -## What does this release mean for Forge? +Highlight features include: +* 📦 Application packaging and code signing +* 🚚 Customizable installers on Windows, macOS, and Linux (DMG, deb, MSI, PKG, AppX, etc.) +* ☁️ Automated publishing flow for cloud providers (GitHub, S3, Bitbucket, etc.) +* ⚡️ Easy-to-use boilerplate templates for webpack and TypeScript +* ⚙️ Native Node.js module support +* 🔌 Extensible JavaScript plugin API -### A complete rewrite +:::info Further reading -From v1 to v5, Electron Forge was based on the now-discontinued [`electron-compile`](https://www.npmjs.com/package/electron-compile) project. Forge v6 is a complete rewrite of the project with a new modular architecture that can be extended to meet any Electron application's needs. In the past few years, Forge v6.0.0-beta has achieved feature parity with v5 and code churn has slowed down dramatically, making the tool ready for general adoption. +Visit the [Why Electron Forge] explainer document to learn more about Forge's philosophy and architecture. -### Making it official +::: -Historically, the Electron project has been unopinionated about build tooling, leaving the task to various community-maintained packages. However, with Electron maturing as a project, it has become harder for new Electron developers to understand which tools they need to build and distribute their apps to users. -To help guide Electron developers in the distribution process, **we have have decided to make Forge the official batteries-included build pipeline for Electron**. Over the past year, we have been slowly integrating Forge into the official Electron documentation, and we have most recently moved Forge over from its old home in electron-userland/electron-forge to the [electron/forge](https://github.com/electron/forge) repo. +## What's new in v6? -## Initializing a new Electron project with Forge v6 +### Completely rewritten -Getting started with Electron Forge can be done easily with the following commands: +From v1 to v5, Electron Forge was based on the now-discontinued [`electron-compile`](https://www.npmjs.com/package/electron-compile) project. Forge 6 is a complete rewrite of the project with a new modular architecture that can be extended to meet any Electron application's needs. + +In the past few years, Forge `v6.0.0-beta` has achieved feature parity with v5 and code churn has slowed down dramatically, making the tool ready for general adoption. + +:::caution Don't install the wrong package + +For versions 5 and below, Electron Forge was published to the `electron-forge` package on npm. +Starting with the v6 rewrite, Forge is instead structured as a monorepo project with many smaller +projects. + +::: + +### Officially supported + +Historically, Electron maintainers have been unopinionated about build tooling, leaving the task to various community packages. However, with Electron maturing as a project, it has become harder for new Electron developers to understand which tools they need to build and distribute their apps. + +To help guide Electron developers in the distribution process, **we have have decided to make Forge the official batteries-included build pipeline for Electron**. + +Over the past year, we have been slowly integrating Forge into the official Electron documentation, and we have recently moved Forge over from its old home in `electron-userland/electron-forge` to the [electron/forge](https://github.com/electron/forge) repo. Now, we are finally ready to release Electron Forge to a general audience! + +## Getting started + +### Initializing a new Forge project + +Scaffolding a new Electron Forge project can be done using the `create-electron-app` CLI script. ```bash - yarn create electron-app my-app --template=webpack - cd my-app - yarn start +yarn create electron-app my-app --template=webpack +cd my-app +yarn start ``` - + ```bash - npx create-electron-app@latest my-app --template=webpack - cd my-app - npm start +npm init electron-app@latest my-app --template=webpack +cd my-app +npm start ``` -These commands will yield a directory called `my-app` with some Electron app boilerplate inside. We have also slipped in a `--template=webpack` option into the initialization command, which adds some preset webpack configuration options to your project. If you head into the `my-app` directory and start up the app, you'll be all set to start developing. Running the `make` command after these steps will package your Electron app into platform specific distributables for you to share with the world. For more information on how to get started, visit the [Getting Started] section in the docs. +The script will create an Electron project in the `my-app` folder with completely JavaScript bundling and a preconfigured build pipeline. + +For more info, see the [Getting Started] guide in the Forge docs. -### Introducing the webpack plugin +:::info First-class webpack support -This release adds webpack support to your build pipeline via the new `@electron-forge/plugin-webpack` module. To get you up and running as fast as possible, Forge v6 comes with a [webpack template], which we have slipped into the initialization commands above. This will add some preset webpack configuration options to your project. +The above snippet uses Forge's [Webpack Template], which we recommend as a starting point for new Electron projects. This template is built around the [`@electron-forge/plugin-webpack`](https://www.electronforge.io/config/plugins/webpack) plugin, which integrates webpack with Electron Forge in a few ways, including: -This plugin integrates webpack with Electron Forge in a few ways, including: -- enhancing the local development flow with webpack-dev-server, including support for Hot Module Replacement in the renderer; -- handling build logic for webpack bundles before the Package step; and +- enhancing local dev flow with [webpack-dev-server](https://webpack.js.org/configuration/dev-server/), including support for HMR in the renderer; +- handling build logic for webpack bundles before application packaging; and - adding support for Native Node modules in the webpack bundling process. -## Importing an existing project into Forge v6 +If you need TypeScript support, consider using the [Webpack + TypeScript Template] instead. + +::: + +### Importing an existing project + +The Electron Forge CLI also contains an import command for existing Electron projects. ```bash - cd my-app - yarn add --dev @electron-forge/cli - yarn electron-forge import +cd my-app +yarn add --dev @electron-forge/cli +yarn electron-forge import ``` - + ```bash - cd my-app - npm install --save-dev @electron-forge/cli - npm exec --package=@electron-forge/cli -c "electron-forge import" +cd my-app +npm install --save-dev @electron-forge/cli +npm exec --package=@electron-forge/cli -c "electron-forge import" ``` -When you use the `import` command, Electron Forge will add a few core dependencies and create a new `forge.config.js` configuration. If you have any existing build tooling (e.g. Electron Packager, Electron Builder, Forge v5), it will try to migrate as many settings as possible. Some of your existing configuration may need to be migrated manually. +When you use the `import` command, Electron Forge will add a few core dependencies and create a new `forge.config.js` configuration. If you have any existing build tooling (e.g. Electron Packager, Electron Builder, or Forge 5), it will try to migrate as many settings as possible. Some of your existing configuration may need to be migrated manually. -Manual migration details can be found in the Forge [import documentation]. If you need help, please stop by the Electron [Discord](https://discord.gg/f4cH9BzaDw) server. +Manual migration details can be found in the Forge [import documentation]. If you need help, please stop by [our Discord server](https://discord.gg/f4cH9BzaDw)! -## Why switch to Forge from an existing pipeline? +## Why switch to Forge? -If you already have tooling for packaging and publishing your electron app, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. +If you already have tooling for packaging and publishing your Electron app, the benefits associated with adopting Electron Forge can still outweigh the initial switching cost. We believe there are two main benefits to using Forge: -1. *Forge receives new features for application building as soon as they are supported in Electron*. This means that alongside the implicit features and plugins that Forge provides, users won't need to wire in new tooling support themselves, or wait for that support to be eventually implemented by other packages before upgrading. For recent examples, see [`@electron/universal`](https://github.com/electron/universal) as well as [ASAR Integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity). +1. **Forge receives new features for application building as soon as they are supported in Electron**. In this case, you won't need to wire in new tooling support yourself, or wait for that support to be eventually implemented by other packages before upgrading. For recent examples, see [macOS universal binaries](https://github.com/electron/universal) and [ASAR integrity checking](https://www.electronjs.org/docs/latest/tutorial/asar-integrity). -1. *Forge's multi-package architecture makes it easy to understand and extend.* Forge was built with the intention of supporting custom plugins, makers and publishers. Since Forge is made up of many smaller packages with clear responsibilities, it is easier to follow code flow. In addition, Forge's extensible API design means that you can write your own additional build logic separate from the provided configuration options for advanced use cases. For more details on extensibility, see the [Extending Electron Forge] section of the docs. +1. **Forge's multi-package architecture makes it easy to understand and extend.** Since Forge is made up of many smaller packages with clear responsibilities, it is easier to follow code flow. In addition, Forge's extensible API design means that you can write your own additional build logic separate from the provided configuration options for advanced use cases. For more details on writing custom Forge plugins, makers, and publishers, see the [Extending Electron Forge] section of the docs. ## Breaking changes -Forge has spent a considerable time in beta development; [this is a list of breaking changes made in recent betas (>= 6.0.0-beta.65)](https://github.com/electron/forge/releases/tag/v6.0.0), so that users who have been using the later beta versions in their apps can more easily transition to the stable release. +Forge 6 has spent a long time in the beta phase, and its release cadence has gradually slowed down. However, we have accelerated development in the second half of 2022 and used the last few releases to push some final breaking changes before the v6.0.0 stable release. -_A complete list of changes and commits can be found [here](https://github.com/electron/forge/blob/main/CHANGELOG.md)_. +If you are an Electron Forge 6 beta user, see the [v6.0.0 GitHub release notes](https://github.com/electron/forge/releases/tag/v6.0.0) for a list of breaking changes made in recent betas (`>=6.0.0-beta.65`). + +A complete list of changes and commits can be found in the repo's [CHANGELOG.md](https://github.com/electron/forge/blob/main/CHANGELOG.md). ## Submit your feedback! -Tell us what you need! The Electron Forge Team is always looking to build the project to better suit its users. - -You can help us improve Electron Forge by submitting feature requests, posting [issues](https://github.com/electron/forge/issues), or just letting us know your feedback! You can also join us in the [official Electron Discord server](https://discord.com/invite/electronjs), where there is a dedicated channel for Electron Forge. +Tell us what you need! The Electron Forge team is always looking to build the project to better suit its users. + +You can help us improve Electron Forge by submitting feature requests, posting [issues](https://github.com/electron/forge/issues), or just letting us know your feedback! You can also join us in the [official Electron Discord server](https://discord.com/invite/electronjs), where there is a dedicated channel for Electron Forge discussion. + +If you want to give any feedback on the Forge docs at https://electronforge.io, we have a +GitBook instance synced to the +[electron-forge/electron-forge-docs](https://github.com/electron-forge/electron-forge-docs) repo. -[Getting Started]: https://www.electronforge.io/ +[getting started]: https://www.electronforge.io/ [import documentation]: https://www.electronforge.io/import-existing-project -[webpack template]: https://www.electronforge.io/templates/webpack-template] + +[webpack template]: https://www.electronforge.io/templates/webpack-template +[webpack + typescript template]: https://www.electronforge.io/templates/webpack-typescript-template [Extending Electron Forge]: https://www.electronforge.io/advanced/extending-electron-forge [Why Electron Forge]: https://www.electronforge.io/core-concepts/why-electron-forge