From ae51b02775c1b833828b08087b0013b268460e94 Mon Sep 17 00:00:00 2001 From: Abishek <43115551+vj-abishek@users.noreply.github.com> Date: Tue, 16 Feb 2021 12:43:34 +0530 Subject: [PATCH] feat: working electron build --- electron/main.js | 40 ++++++++++++++++++++++++++++++++++++++++ package.json | 23 +++++++++++++++-------- public/electron.js | 29 ----------------------------- src/index.js | 8 ++++---- yarn.lock | 16 ++++++++++++++++ 5 files changed, 75 insertions(+), 41 deletions(-) create mode 100644 electron/main.js delete mode 100644 public/electron.js diff --git a/electron/main.js b/electron/main.js new file mode 100644 index 0000000..d52a0ed --- /dev/null +++ b/electron/main.js @@ -0,0 +1,40 @@ +const { app, BrowserWindow } = require('electron'); +const path = require('path'); +const url = require('url'); + +let mainWindow; + +const createWindow = () => { + mainWindow = new BrowserWindow({ width: 800, height: 600, show: false }); + mainWindow.loadURL( + !app.isPackaged + ? process.env.ELECTRON_START_URL + : url.format({ + pathname: path.join(__dirname, '../index.html'), + protocol: 'file:', + slashes: true, + }), + ); + + mainWindow.once('ready-to-show', () => { + mainWindow.show(); + }); + + mainWindow.on('closed', () => { + mainWindow = null; + }); +}; + +app.on('ready', createWindow); + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app.on('activate', () => { + if (mainWindow === null) { + createWindow(); + } +}); diff --git a/package.json b/package.json index cebfb7f..6460280 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "version": "1.0.0", "private": true, "author": "Abishek", - "main": "public/electron.js", + "main": "electron/main.js", + "homepage": "./", "build": { "appId": "sh.now.relp", "productName": "Relp", @@ -72,21 +73,26 @@ "workbox-build": "^5.1.3" }, "scripts": { - "start": "yarn build:css && react-scripts start", + "main": "yarn build:css && react-scripts start", "build-sw": "node ./src/sw-build.js", "clean-cra-sw": "rm -f build/precache-manifest.*.js && rm -f build/service-worker.js", - "build": "NODE_ENV=production yarn build:css && react-scripts build && npm run build-sw && npm run clean-cra-sw", - "windows-build": "set NODE_ENV=production&&yarn build:css && react-scripts build && npm run build-sw && npm run clean-cra-sw", + "main-build": "cross-env NODE_ENV=production yarn build:css && react-scripts build && npm run build-sw && npm run clean-cra-sw", "test": "react-scripts test", - "test-sw": "yarn windows-build && serve build", + "test-sw": "yarn main-build && serve build", "build:css": "postcss src/Styles/tailwind.css -o src/Styles/AutoGenerated/main.css", "lint": "eslint src/**/*.js src/**/*.jsx", "format": "npm run prettier -- --write", "prettier": "prettier \"src/**/*.{js,jsx,css,json}\"", "eject": "react-scripts eject", - "electron-pack": "electron-builder -c.extraMetadata.main=build/electron.js", - "preelectron-pack": "yarn windows-build", - "electron-dev": "concurrently \"set BROWSER=none yarn start\" \"wait-on http://localhost:3000 && electron .\"" + "electron-pack": "electron-builder -c.extraMetadata.main=build/electron/main.js", + "electron-dev": "concurrently \"cross-env BROWSER=none yarn start\" \"wait-on http://localhost:3000 && electron .\"", + "start": "cross-env BROWSER=none && npm run main", + "start-electron": "cross-env ELECTRON_START_URL=http://localhost:3000 && electron .", + "build": "npm run main-build", + "build-electron": "mkdir build/src && cp -r electron/. build/electron", + "build-electron-win": "mkdir build\\src && Xcopy /E /I /Y electron build\\electron", + "package": "npm run build && npm run build-electron && electron-builder build -c.extraMetadata.main=build/electron/main.js --publish never", + "package-win": "npm run build && npm run build-electron-win && electron-builder build -c.extraMetadata.main=build/electron/main.js --publish never" }, "eslintConfig": { "extends": "react-app" @@ -106,6 +112,7 @@ "devDependencies": { "autoprefixer": "^9.8.5", "concurrently": "^5.3.0", + "cross-env": "^7.0.3", "electron": "^10.1.5", "electron-builder": "^22.9.1", "eslint": "^6.8.0", diff --git a/public/electron.js b/public/electron.js deleted file mode 100644 index ea8d4cf..0000000 --- a/public/electron.js +++ /dev/null @@ -1,29 +0,0 @@ -const electron = require('electron'); -const app = electron.app; -const BrowserWindow = electron.BrowserWindow; - -const path = require('path'); -const url = require('url'); -const isDev = require('electron-is-dev'); - -let mainWindow; - -function createWindow() { - mainWindow = new BrowserWindow({ width: 900, height: 680 }); - mainWindow.loadURL(isDev ? 'http://localhost:3000' : `file://${path.join(__dirname, '../build/index.html')}`); - mainWindow.on('closed', () => mainWindow = null); -} - -app.on('ready', createWindow); - -app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { - app.quit(); - } -}); - -app.on('activate', () => { - if (mainWindow === null) { - createWindow(); - } -}); \ No newline at end of file diff --git a/src/index.js b/src/index.js index 7aa40aa..a784e8f 100644 --- a/src/index.js +++ b/src/index.js @@ -3,11 +3,11 @@ import { render } from 'react-dom'; import { createStore, applyMiddleware } from 'redux'; import { Provider } from 'react-redux'; import thunk from 'redux-thunk'; -import { Router } from 'react-router-dom'; +import { MemoryRouter } from 'react-router-dom'; import * as Sentry from '@sentry/browser'; import { composeWithDevTools } from 'redux-devtools-extension'; import App from './App'; -import history from './history'; +// import history from './history'; import reducer from './Store/reducers/rootReducers'; import * as serviceWorker from './serviceWorker'; import 'fawn-components/lib/fn-pwa-banner'; @@ -26,9 +26,9 @@ const store = createStore(reducer, composeWithDevTools(applyMiddleware(thunk))); const rootElement = document.getElementById('root'); render( - + - + , rootElement, ); diff --git a/yarn.lock b/yarn.lock index d1da0fa..690b455 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4944,6 +4944,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + cross-spawn@7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" @@ -4964,6 +4971,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"