Code Monkey home page Code Monkey logo

electron-react-webpack-typescript-2022's Introduction

Electron React Webpack Typescript (ERWT)

Electron React Webpack Typescript Boilerplate with Custom Window and Titlebar Menus.

A minimal secure boilerplate for writing Desktop Applications using Electron, React, Webpack & TypeScript.
This project makes use of latest packages and configurations to serve the best environment for development.


Special thanks to @guasam for their contirubtion regarding custom window titlebar, menus & themes.


Custom Electron Window Titlebar & Menus etc.

This project includes electron-window for creating custom window components.

Following are the list of features it provides :

  • Custom Titlebar for Electron Window.
  • Easily changable platform specific controls for max/min/close buttons using windows or mac value for platform property with <WindowFrame> in renderer.
  • Titlebar menus can show/hide by pressing alt or option key.
  • Window frame title prop displays in titlebar center when menus are toggeled off.
  • Menu entries can be customized in misc/window/titlebarMenus.ts file.
  • Menu items and windows controls layout or colors can be customized easily by modifying the misc/window modules.



Core Features

  • ๐ŸŒŸ Electron
  • ๐ŸŒ€ TypeScript
  • โš›๏ธ React
  • ๐Ÿฅ— SASS/SCSS Loader
  • ๐Ÿ›ถ LESS Loader (optional)
  • ๐ŸŽจ CSS Loader
  • ๐Ÿ“ธ Image Loader
  • ๐Ÿ†Ž Font Loader
  • ๐Ÿงน ESLint
  • ๐Ÿ“ฆ Electron Forge
  • ๐Ÿ“ Custom Window Frame
  • ๐Ÿ“ Custom Window Titlebar
  • ๐Ÿ“ Custom Window Menubar
  • ๐Ÿ”ฑ Webpack & Configuration
  • ๐Ÿงฉ Aliases for Project Paths
  • ๐Ÿ”ฅ React Fast Refresh + Webpack HMR
  • ๐ŸŒž Dark Mode + Light Mode (Theme)
  • ๐ŸŽ Package Bundling (Distribution / Release)

Custom Aliases for Paths

We can use predefined aliases for import paths already used in this project. Following are the details:

Alias Target Path
@assets /assets
@main /src/main
@renderer /src/renderer
@common /src/common
@misc /misc
@src /src
@components /src/renderer/components



Installation

status

Main version of this project contains files structure in separate context for main and renderer, with custom electron window, titlebar etc.

git clone https://github.com/codesbiome/electron-react-webpack-typescript-2022

OR

status

Minimal version of ERWT contains very simple project files structure, no custom window, no custom titlebar & menus.

git clone -b minimal https://github.com/codesbiome/electron-react-webpack-typescript-2022

Install dependencies using pnpm or yarn or npm :

# using pnpm
pnpm install

# or using yarn
yarn install

# or using npm
npm install

Start : Development

To develop and run your application, you need to run following command.
Start electron application for development :

yarn start

Lint : Development

To lint application source code using ESLint via this command :

yarn lint

Package : Production

Customize and package your Electron app with OS-specific bundles (.app, .exe etc)

yarn package

Make : Production

Making is a way of taking your packaged application and making platform specific distributables like DMG, EXE, or Flatpak files (amongst others).

yarn make

Publish : Production

Publishing is a way of taking the artifacts generated by the make command and sending them to a service somewhere for you to distribute or use as updates. (This could be your update server or an S3 bucket)

yarn publish

Packager & Makers Configuration

This provides an easy way of configuring your packaged application and making platform specific distributables like DMG, EXE, or Flatpak files.

This configurations file is available in :

tools/forge/forge.config.js

For further information, you can visit Electron Forge Configuration

Debug For Neovim

nvim-dap-vscode-js

dap.configurations.typescript = {
  {
    name = "Electron-forge Main",
    type = "pwa-node",
    request = "launch",
    cwd = "${workspaceFolder}",
    webRoot = "${workspaceFolder}",
    runtimeExecutable = "${workspaceFolder}/node_modules/.bin/electron-forge-vscode-nix",
    windows = {
      runtimeExecutable = "${workspaceFolder}/node_modules/.bin/electron-forge-vscode-win.cmd",
    },
    runtimeArgs = {},
    resolveSourceMapLocations = {
      "${workspaceFolder}/**",
      "!**/node_modules/**",
    },
  },
}
dap.configurations.typescriptreact = { -- change to typescript if needed
  {
    name = "Electron-forge Render",
    type = "pwa-chrome",
    request = "attach",
    port = 9222,
    webRoot = "${workspaceFolder}",
  },
}

electron-react-webpack-typescript-2022's People

Contributors

codesbiome avatar dependabot[bot] avatar guasam avatar ouyangjunyi avatar ptlzc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.