This is an old revision of the document!
Base di partenza: configurazione `package.json` in stile LibrePM
Questa guida spiega come usare una configurazione npm + Electron + Vite + electron-builder simile a quella del progetto LibrePM per creare nuove applicazioni desktop che:
L’obiettivo non è solo “far partire Electron”, ma usare una struttura replicabile per nuovi progetti con una pipeline di build pulita, comprensibile e pronta per crescere.
Il `package.json` di LibrePM implementa una pipeline molto concreta:
In pratica è una soluzione ideale quando vuoi costruire una desktop app npm-based ma con capacità più enterprise rispetto a una semplice web app.
Di seguito i punti più importanti della configurazione di partenza e il loro significato operativo
```json
{
"name": "nometuaapp-desktop",
"version": "0.1.0",
"description": "NomeTuaApp - Descrizione",
"type": "module",
"main": "electron/main.cjs"
}
```
In questa configurazione il progetto usa ESM a livello package ma il processo principale Electron è in CommonJS con file `.cjs`
È una scelta pratica e sensata quando vuoi:
Script presenti
```json
"scripts": {
"dev": "concurrently -k \"vite --host 127.0.0.1\" \"wait-on http://127.0.0.1:5173 && electron .\"",
"dev:renderer": "vite",
"dev:electron": "wait-on http://localhost:5173 && electron .",
"build": "vite build",
"dist": "cd .. && ./gradlew bootJar && cd desktop && vite build && electron-builder",
"preview": "vite preview"
}
```
Logica operativa
Perché questa impostazione è utile anche per nuovi progetti
Per nuove app puoi mantenere lo stesso schema anche se:
Ti basta sostituire la parte centrale della pipeline
Ad esempio:
```json "dist": "vite build && electron-builder" ```
oppure
```json "dist": "npm run build:backend && vite build && electron-builder" ```
Usa questa struttura quando vuoi realizzare:
Non è invece la scelta più leggera se vuoi solo:
Una struttura chiara per replicare questa configurazione è la seguente
```text my-app/ ├─ desktop/ │ ├─ electron/ │ │ ├─ main.cjs │ │ └─ preload.cjs │ ├─ src/ │ │ ├─ assets/ │ │ │ ├─ icon.png │ │ │ ├─ icon.ico │ │ │ └─ icon.icns │ │ ├─ App.jsx │ │ └─ main.jsx │ ├─ dist/ │ ├─ dist-electron/ │ ├─ index.html │ ├─ package.json │ └─ vite.config.js ├─ backend/ │ └─ … eventuale backend └─ build/
└─ libs/
└─ my-backend.jar
```