An example to showcase a typescript-based electron application.
Uses native esm everywhere possible (main and renderer), as electron 28 now supports it. preload bundle is still commonjs to allow sandbox.
Showcases creation of a direct communication channel between the renderer and main. Revives itself upon window reload.
npm run build - bundles src into dist in production mode. No source-maps.
npm run build:watch - bundles src into dist in development mode and watches. Source-maps are generated.
npm start - runs dist using electron. If dist was built in development mode, main is debuggable using VSCode's JavaScript Debug Terminal.
npm run build:unpacked - builds dist into out/<arch>-unpacked containing a self contained electron application.
npm run build:packed - same as npm run unpacked, but also builds deb, rpm, snap, and zip packages into out.
npm run build:full - runs npm run build and npm run build:packed.
npm run typecheck - checks sources using typescript.
On a freshly installed Fedora 41, with all updates:
To build .deb:
sudo dnf install dpkg fakeroot libxcrypt-compatTo build .rpm:
sudo dnf install rpm-build rubygems
gem install fpmMIT

