Skip to content

Overview ​

electronup itself only orchestrates the build. The packages below are installed on demand to create projects or add runtime capabilities.

  • create-electronup: CLI that creates electronup project templates (vanilla, vue, react, react-swc, solid).
  • @quiteer/parser-config: resolves user config files by path; electronup uses it to read electronup.config.ts and friends.

The seven packages below are maintained under packages/electron-* in this repository and work alongside electronup. Install only what you need:

  • @quiteer/electron-ipc: preset IPC channels for the main process; one init() call lets the renderer control its own window and call node:path helpers.
  • @quiteer/electron-preload: preload script; import it to get the path and expose the curated $ipc / $clipboard / $webFrame APIs.
  • @quiteer/electron-browser: window management with central registration, lookups anywhere and reactive properties.
  • @quiteer/electron-menu: menu management with central registration, path-based lookups and automatic syncing.
  • @quiteer/electron-tray: tray management with central registration, icon states, menus and events.
  • @quiteer/electron-app: app lifecycle boilerplate with single instance lock, deep links, macOS activate window recreation and graceful quit.
  • @quiteer/electron-shortcut: global shortcut management with named registration, conflict detection, focus-based enabling and automatic unregistering on quit.

Upgrading electron-preload / electron-ipc from an older version? See the migration guide.

These runtime packages do not depend on the electronup CLI and do not affect build output paths. Import them from your own main process entry as needed.

Installing in an electronup project ​

electronup builds the main process as CJS (electron.cjs). Packages in dependencies that can be required stay external and are required at runtime. ESM-only packages whose exports only offer an import condition (all of these except electron-preload) are bundled into electron.cjs automatically, because require would fail with ERR_PACKAGE_PATH_NOT_EXPORTED. So these packages work from either dependencies or devDependencies:

PackageRecommendedWhy
electron-ipc / browser / menu / tray / app / shortcutdevDependenciesThey are bundled into electron.cjs either way; in devDependencies the installer does not carry another copy
electron-preloaddependenciespreloadPath / createPreload() point to the prebuilt index.cjs inside the package, which must exist at runtime, so electron-builder ships it
bash
pnpm add -D @quiteer/electron-ipc @quiteer/electron-browser
pnpm add @quiteer/electron-preload

To bundle other require-able runtime dependencies into the main process too, list them in packConfig.noExternal in electronup.config.ts; packages listed in packConfig.external are never bundled. When using electron-preload you do not need to build it again through electronup's preload option.

Released under the MIT License.