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
```