Saltar al contenido principal

W - PFG - Generar aplicación escritorio react y electron

Configuración del proyecto de react y electron

En estos sencillos pasos configuraremos nuestro proyecto realizado en react js para convertirlo en un instalable a partir de Electron.

1.- Instalar Electron de manera global en nuestro equipo.

npm i -D electron@latest

2.- Crear o tener un proyecto de react.

3.- Añadir Electron y e instalar dependencias a nuestro proyecto.

npm install electron electron-builder ---save-dev

npm install wait-on concurrently ---save-dev

npm install electron-is-dev

4.- Creamos nuestro archivo electron.js dentro de la carpeta public donde agregaremos las siguientes instrucciones.

const { app, BrowserWindow } = require("electron");

constpath =require("path");

constisDev =require("electron-is-dev");

let mainWindow;

functioncreateWindow() {

// Generate browser for desktop

mainWindow = newBrowserWindow({

width: 1200, // With for desktop app

height: 1000, // Height for desktop app

title: "VRTraining", // Title of my application

autoHideMenuBar: true, // Hide default menu bar in electron

icon: isDev? path.join(process.cwd(), 'public/icons/icon.ico') : '', // Icon desktop app, only for develop

//resizable: false, // Disable the option to expand the window

});

// Open default with windows maximize

mainWindow.maximize();

mainWindow.loadURL(

isDev

?"http://localhost:3000"

:`file://${path.join(__dirname, "../build/index.html")}`

);

if (isDev) mainWindow.webContents.openDevTools();

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();

}

})

5.- Dentro de la carpeta public en el archivo index.html, agregamos la siguiente etiqueta:

<metahttp-equiv="Content-Security-Policy"content="script-src 'self';" />

6.- Dentro de la carpeta public crearemos una carpeta de nombre icons, la cual contendrá 3 iconos para los tres tipos de sistemas operativos más usados.

6.1- Para Windows será de tipo .ico.

6.2- Para Mac será de tipo .icns.

6.3- Para Linux será de tipo .png

Es de suma importancia que las imágenes tengan una resolución de 256 x 256 pixeles.

7.- Dentro del archivo package.json agregamos los siguientes scripts:

7.1- Agregaremos la información de los autores, descripción del proyecto, un homepage y un main que se conecta con la configuración de Electron.

"author": {

"name": "Inmersys web developer",

"email": "inmersys.developer@gmail.com"

},

"description": "CMS for VRTraining created with react 18 and builded with electron",

"homepage": "./",

"main": "./public/electron.js",

7.2- Agregamos los comandos para ejecutar nuestro proyecto en modo desarrollo y en modo producción para obtener los instalables dependiendo del sistema operativo manejado.

"electron-dev": "concurrently \"SET BROWSER=none&&npm start\"\"wait-on http://localhost:3000&& electron .\"",

"electron-package-mac": "npm run build && electron-builder -m -c.extraMetadata.main=build/electron.js",

"electron-package-win": "npm run build && electron-builder -w -c.extraMetadata.main=build/electron.js",

"electron-package-linux": "npm run build && electron-builder -l -c.extraMetadata.main=build/electron.js"

7.3- Agregamos la configuración de producción para que cuando se nos genere el instalable tenga el nombre, los iconos y formatos correctos que usará cada sistema operativo.

"build": {

"productName": "VRTraining",

"copyright": "Copyright © 2022 Inmersys",

"files": [

"build/**/*",

"node_modules/**/*"

],

"directories": {

"buildResources": "public"

},

"mac": {

"icon": "public/icons/icon.icns",

"target": "dmg"

},

"win": {

"icon": "public/icons/icon.ico",

"target": "nsis"

},

"linux": {

"icon": "public/icons/ico.png",

"target": "deb"

}

}

8.- En las rutas de nuestro proyecto cambiamos el BrowserRouter por HashRouter provenientes de la librería react-router-dom.

import { HashRouter } from"react-router-dom";

9.- Para corroborar que todo funcione correctamente ejecutamos nuestro proyecto.

npm run electron-dev

10. Para obtener los instalables que usaremos en nuestros diferentes sistemas operativos, en la consola ejecutamos, cualquiera de los siguientes comandos:

npm run electron-package-mac

npm run electron-package-win

npm run electron-package-linux

10. Se nos generará dos carpetas, uno build y el otro dist. Dentro de la carpeta dist encontraremos el instalable para poder usar.

11. Vista de nuestra aplicación de escritorio.

12. Firma de nuestra aplicación de escritorio.

……