feat: electron demo
This commit is contained in:
		
							parent
							
								
									8250f76055
								
							
						
					
					
						commit
						4258196824
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1 +1,3 @@ | ||||
| node_modules/ | ||||
| 
 | ||||
| out/ | ||||
							
								
								
									
										34
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| { | ||||
|   "version": "0.2.0", | ||||
|   "compounds": [ | ||||
|     { | ||||
|       "name": "Main + renderer", | ||||
|       "configurations": ["Main", "Renderer"], | ||||
|       "stopAll": true | ||||
|     } | ||||
|   ], | ||||
|   "configurations": [ | ||||
|      | ||||
| 
 | ||||
|     { | ||||
|       "name": "Renderer", | ||||
|       "port": 9222, | ||||
|       "request": "attach", | ||||
|       "type": "chrome", | ||||
|       "webRoot": "${workspaceFolder}" | ||||
|     }, | ||||
|     { | ||||
|       "name": "Main", | ||||
|       "type": "node", | ||||
|       "request": "launch", | ||||
|       "cwd": "${workspaceFolder}", | ||||
|       "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", | ||||
|       "windows": { | ||||
|         "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd" | ||||
|       }, | ||||
|       "args": [".", "--remote-debugging-port=9222"], | ||||
|       "outputCapture": "std", | ||||
|       "console": "integratedTerminal" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										44
									
								
								forge.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								forge.config.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| const { FusesPlugin } = require('@electron-forge/plugin-fuses'); | ||||
| const { FuseV1Options, FuseVersion } = require('@electron/fuses'); | ||||
| 
 | ||||
| module.exports = { | ||||
|   packagerConfig: { | ||||
|     asar: true, | ||||
|   }, | ||||
|   rebuildConfig: {}, | ||||
|   makers: [ | ||||
|     { | ||||
|       name: '@electron-forge/maker-squirrel', | ||||
|       config: {}, | ||||
|     }, | ||||
|     { | ||||
|       name: '@electron-forge/maker-zip', | ||||
|       platforms: ['darwin'], | ||||
|     }, | ||||
|     { | ||||
|       name: '@electron-forge/maker-deb', | ||||
|       config: {}, | ||||
|     }, | ||||
|     { | ||||
|       name: '@electron-forge/maker-rpm', | ||||
|       config: {}, | ||||
|     }, | ||||
|   ], | ||||
|   plugins: [ | ||||
|     { | ||||
|       name: '@electron-forge/plugin-auto-unpack-natives', | ||||
|       config: {}, | ||||
|     }, | ||||
|     // Fuses are used to enable/disable various Electron functionality
 | ||||
|     // at package time, before code signing the application
 | ||||
|     new FusesPlugin({ | ||||
|       version: FuseVersion.V1, | ||||
|       [FuseV1Options.RunAsNode]: false, | ||||
|       [FuseV1Options.EnableCookieEncryption]: true, | ||||
|       [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, | ||||
|       [FuseV1Options.EnableNodeCliInspectArguments]: false, | ||||
|       [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, | ||||
|       [FuseV1Options.OnlyLoadAppFromAsar]: true, | ||||
|     }), | ||||
|   ], | ||||
| }; | ||||
							
								
								
									
										19
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <meta charset="UTF-8" /> | ||||
|     <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP --> | ||||
|     <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'" /> | ||||
|     <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'" /> | ||||
|     <title>Hello from Electron renderer!</title> | ||||
|   </head> | ||||
|   <body> | ||||
|     <h1>Hello from Electron renderer!</h1> | ||||
|     <p>👋</p> | ||||
|     <p id="info"></p> | ||||
|     <p id="response"></p> | ||||
|     <button id="ping">Ping</button> | ||||
|   </body> | ||||
|   <script src="./renderer.js"></script> | ||||
| 
 | ||||
| </html> | ||||
							
								
								
									
										27
									
								
								main.js
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								main.js
									
									
									
									
									
								
							| @ -1 +1,26 @@ | ||||
| console.log('Hello from Electron 👋') | ||||
| const { app, BrowserWindow, ipcMain } = require('electron') | ||||
| const path = require('path') | ||||
| const createWindow = () => { | ||||
|   const win = new BrowserWindow({ | ||||
|     width: 800, | ||||
|     height: 600, | ||||
|     webPreferences: { | ||||
|       preload: path.join(__dirname, 'preload.js'), | ||||
|     }, | ||||
|   }) | ||||
| 
 | ||||
|   win.loadFile('index.html') | ||||
| } | ||||
| 
 | ||||
| app.whenReady().then(() => { | ||||
|   ipcMain.handle('ping', () => 'pong') | ||||
|   createWindow() | ||||
| 
 | ||||
|   app.on('activate', () => { | ||||
|     if (BrowserWindow.getAllWindows().length === 0) createWindow() | ||||
|   }) | ||||
| }) | ||||
| 
 | ||||
| app.on('window-all-closed', () => { | ||||
|   if (process.platform !== 'darwin') app.quit() | ||||
| }) | ||||
|  | ||||
							
								
								
									
										9520
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9520
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										17
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								package.json
									
									
									
									
									
								
							| @ -3,14 +3,27 @@ | ||||
|   "version": "1.0.0", | ||||
|   "main": "main.js", | ||||
|   "scripts": { | ||||
|     "start": "electron .", | ||||
|     "test": "echo \"Error: no test specified\" && exit 1" | ||||
|     "start": "electron-forge start", | ||||
|     "test": "echo \"Error: no test specified\" && exit 1", | ||||
|     "package": "electron-forge package", | ||||
|     "make": "electron-forge make" | ||||
|   }, | ||||
|   "keywords": [], | ||||
|   "author": "", | ||||
|   "license": "ISC", | ||||
|   "description": "", | ||||
|   "devDependencies": { | ||||
|     "@electron-forge/cli": "^7.7.0", | ||||
|     "@electron-forge/maker-deb": "^7.7.0", | ||||
|     "@electron-forge/maker-rpm": "^7.7.0", | ||||
|     "@electron-forge/maker-squirrel": "^7.7.0", | ||||
|     "@electron-forge/maker-zip": "^7.7.0", | ||||
|     "@electron-forge/plugin-auto-unpack-natives": "^7.7.0", | ||||
|     "@electron-forge/plugin-fuses": "^7.7.0", | ||||
|     "@electron/fuses": "^1.8.0", | ||||
|     "electron": "^35.0.1" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "electron-squirrel-startup": "^1.0.1" | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										10
									
								
								preload.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								preload.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| const { contextBridge, ipcRenderer } = require('electron') | ||||
| 
 | ||||
| contextBridge.exposeInMainWorld('versions', { | ||||
|   node: () => process.versions.node, | ||||
|   chrome: () => process.versions.chrome, | ||||
|   electron: () => process.versions.electron, | ||||
|   ping: () => ipcRenderer.invoke('ping'), | ||||
| }) | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										16
									
								
								renderer.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								renderer.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| const information = document.getElementById('info') | ||||
| const responseElement = document.getElementById('response') | ||||
| 
 | ||||
| if (information) { | ||||
|   const { versions } = window || {} | ||||
|   information.innerText = `Node.js: ${versions.node()}\nChrome: ${versions.chrome()}\nElectron: ${versions.electron()}` | ||||
| } | ||||
| 
 | ||||
| const func = async () => { | ||||
|   const response = await window.versions.ping() | ||||
|   if (responseElement) { | ||||
|     responseElement.innerText = response | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| func() | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user