rsnext/examples/with-electron-typescript
Jeremy Asuncion 1f9a40b644 Fix source in electron build (#9802)
* copy only compiled files into electron build for with-electron-typescript

* updated npm deps for with-electron-typescript

* copy only compiled files into electron build for with-electron

* updated npm deps for with-electron

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2019-12-21 13:25:27 -06:00
..
electron-src Fix source in electron build (#9802) 2019-12-21 13:25:27 -06:00
renderer Prettier fix (#8754) 2019-09-16 15:24:42 +02:00
package.json Fix source in electron build (#9802) 2019-12-21 13:25:27 -06:00
README.md Replace the deprecated Create Next App URL (#9032) 2019-10-10 23:34:14 -04:00

Electron with Typescript application example

You can find a detailed documentation about how to build Electron apps with Next.js here!

How to use

Using create-next-app

Execute create-next-app with Yarn or npx to bootstrap the example:

npx create-next-app --example with-electron-typescript with-electron-typescript-app
# or
yarn create next-app --example with-electron-typescript with-electron-typescript-app

Download manually

Download the example:

curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-electron-typescript
cd with-electron-typescript

To install and start dev build:

yarn install && yarn build && yarn start

Available commands:

"yarn build-renderer": build and transpile Next.js layer
"yarn build-electron": transpile electron layer
"yarn build": build both layers
"yarn start": start dev version
"yarn dist": create production elctron build
"yarn type-check": check TypeScript in project

The idea behind the example

This example show how you can use Next.js inside an Electron application to avoid a lot of configuration, use Next.js router as view and use server-render to speed up the initial render of the application. Both Next.js and Electron layers are written in TypeScript and compiled to JavaScript during the build process.

Part Source code (Typescript) Builds (JavaScript)
Next.js /renderer /renderer
Electron /electron-src /main
Production /dist

For development it's going to run a HTTP server and let Next.js handle routing. In production it use next export to pre-generate HTML static files and use them in your app instead of running an HTTP server.

You can create the production app using npm run dist.

note regarding types:

  • Electron provides its own type definitions, so you don't need @types/electron installed! source: https://www.npmjs.com/package/@types/electron
  • There were no types available for electron-next at the time of creating this example, so until they are available there is a file electron-next.d.ts in electron-src directory.