Skip to content

Commit a2a3bfa

Browse files
committed
Reutilizamos nuestro código de frontend para convertirlo con electron en una app de escritorio, proyectos finalizados
1 parent 77fd749 commit a2a3bfa

File tree

5 files changed

+77
-10
lines changed

5 files changed

+77
-10
lines changed

Project/Desktop/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ function createWindow(){
1414
//podriamos evitar que el usuario redimencione la pantalla con
1515
//resizable:false
1616
//También podemos limitar un mínimo redimensionable de altura y anchura
17-
//min-width:600,
18-
//min-height:700
17+
//minWidth:600,
18+
//minHeight:700
1919
});
2020

2121
//Cuando la aplicación es cerrada liberamos los recursos de memoria

Project/README.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,22 @@
2525
# Desktop
2626

2727
- Inicializamos ``` npm init ``` dentro de la carpeta "Desktop"
28-
- Luego instalamos electrón ``` npm i -D electron@latest ```
29-
- Instalamos una dependencia para crear los instalables en electrón
28+
- Luego instalamos electron ``` npm i -D electron@latest ```
29+
- Instalamos una dependencia para crear los instalables en electron
3030
-``` npm install --save-dev electron-builder ```
3131
- Luego en package.json añadir el script:
3232
- "dist": "electron-builder -l"
3333
- En mi caso crearé un instalable para linux con la bandera "-l", (para windows: "-w" y para Mac " -m")
34-
- Finalmente ejecutar ``` npm run dist ```
34+
- Finalmente ejecutar ``` npm run dist ```
35+
36+
## Usar el proyecto de Frontend con electron
37+
38+
nos ubicamos en la carpeta raiz del "frontend" e instalamos unas dependencias:
39+
- ``` npm install --save cross-env electron-is-dev ```, nos permitirá saber en que entorno estamos, si es de desarrollo o de producción.
40+
41+
- ``` npm install concurrently wait-on electron electron-builder typescript ```
42+
* ```concurrently``` para ejecutar dos o mas comandos a la vez
43+
* ```wait-on``` para esperar a que el host esté activo y ejecutar todo lo demás
44+
* ```electron ``` para crear la app de escritorio
45+
* ```electron-builder``` para crear los instalables
46+
* ```typescript``` porque es una dependencia exigida por electron

Project/frontend/package.json

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,37 @@
22
"name": "frontend",
33
"version": "0.1.0",
44
"private": true,
5-
65
"dependencies": {
76
"@testing-library/jest-dom": "^5.16.5",
87
"@testing-library/react": "^13.3.0",
98
"@testing-library/user-event": "^13.5.0",
109
"axios": "^0.27.2",
10+
"concurrently": "^7.3.0",
11+
"cross-env": "^7.0.3",
12+
"electron": "^20.0.3",
13+
"electron-builder": "^23.3.3",
14+
"electron-is-dev": "^2.0.0",
1115
"react": "^18.2.0",
1216
"react-dom": "^18.2.0",
1317
"react-router-dom": "^6.3.0",
1418
"react-scripts": "5.0.1",
1519
"sweetalert2": "^11.4.29",
20+
"typescript": "^4.7.4",
21+
"wait-on": "^6.0.1",
1622
"web-vitals": "^2.1.4"
1723
},
1824
"scripts": {
19-
"start": "react-scripts start",
20-
"build": "react-scripts build",
21-
"test": "react-scripts test",
22-
"eject": "react-scripts eject"
25+
"react-start": "react-scripts start",
26+
"react-build": "react-scripts build",
27+
"react-test": "react-scripts test --env=jsdom",
28+
"react-eject": "react-scripts eject",
29+
"electron-build": "electron-builder",
30+
"release": "yarn react-build && electron-builder --publish=always",
31+
"build": "yarn react-build && yarn electron-build",
32+
"start": "concurrently \"cross-env BROWSER=none npm run react-start\" \"wait-on http://localhost:3000 && electron .\""
2333
},
34+
"main":"public/electron.js",
35+
"homepage":"./",
2436
"eslintConfig": {
2537
"extends": [
2638
"react-app",
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
const {app, BrowserWindow } = require('electron');
2+
const path= require('path');
3+
const isDev = require('electron-is-dev');
4+
5+
let appWindow;
6+
7+
function createWindow(){
8+
9+
appWindow = new BrowserWindow({
10+
width:1000,
11+
height:600,
12+
center:true,
13+
resizable:true,
14+
minWidth:600,
15+
minHeight:400,
16+
show:false,
17+
icon:'icon.png'
18+
})
19+
appWindow.loadURL(
20+
isDev
21+
? 'http://localhost:3000'
22+
:`file://${path.join(__dirname,"../build/index.html")}`
23+
24+
);
25+
26+
appWindow.once('ready-to-show',()=>{
27+
appWindow.show();
28+
})
29+
}
30+
31+
app.on('ready',createWindow);
32+
33+
app.on('window-all-closed',()=>{
34+
if(process.platform !== 'darwin'){
35+
app.quit();
36+
}
37+
})
38+
39+
app.on('activate',()=>{
40+
if(appWindow === null){
41+
createWindow();
42+
}
43+
})

Project/frontend/public/icon.png

18.1 KB
Loading

0 commit comments

Comments
 (0)