Electron & Electron Builder

This commit is contained in:
2024-11-02 18:09:44 +01:00
parent 201714403c
commit aeb28fe5a7
9 changed files with 8007 additions and 1307 deletions

View File

@@ -0,0 +1,37 @@
{
"asar": true,
"appId": "de.luh.app",
"directories": {
"output": "out"
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"shortcutName": "Electron App"
},
"mac": {
"target": "dmg"
},
"win": {
"target": "nsis"
},
"linux": {
"target": ["deb"],
"maintainer": "Tobias Zoghaib"
},
"files": [
{
"from": "build",
"to": "build",
"filter": ["**/*"]
},
"!backend",
"!electron",
"!release",
"!src",
"!dist",
"!out"
]
}

View File

@@ -0,0 +1,46 @@
const { app, BrowserWindow } = require("electron");
const path = require("path");
const backend = require('./../backend/server')
/**
* Create the application window
*/
function createWindow() {
const win = new BrowserWindow({
width: 1400,
height: 800,
webPreferences: {
preload: path.join(__dirname, "preload.js"),
},
});
// Load HTML entry point
win.loadFile("build/src/vite/index.html");
// Maximize window
win.maximize()
// Remove menu bar
win.removeMenu()
}
app.whenReady().then(() => {
createWindow();
app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
});
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
// Close the expressjs backend server on application termination
backend.close(() => {
process.exit(0)
})
});

View File

@@ -0,0 +1,10 @@
window.addEventListener('DOMContentLoaded', () => {
const replaceText = (selector: any, text: any) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}
for (const dependency of ['chrome', 'node', 'electron']) {
replaceText(`${dependency}-version`, process.versions[dependency])
}
})

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,29 @@
{ {
"name": "hackmycart", "name": "eventmaster",
"version": "0.0.0", "version": "0.1.0",
"author": "Tobias Zoghaib",
"description": "Hackable ticket store for educational purposes",
"license": "MIT",
"homepage": "www.uni-hannover.de",
"main": "build/src/electron/index.js",
"private": true, "private": true,
"scripts": { "scripts": {
"vite:dev": "vite", "vite:dev": "vite",
"vite:build": "vite build", "vite:build": "vite build",
"vite:preview": "vite preview", "vite:preview": "vite preview",
"server:build": "tsc -p tsconfig.server.json --composite false", "server:clean": "rimraf build/",
"server:copy-files": "copyfiles -u l backend/images/**/*.* build/src/",
"server:build": "tsc -p tsconfig.server.json --composite false && npm run server:copy-files",
"server:dev": "nodemon", "server:dev": "nodemon",
"fullstack:dev": "concurrently \"nodemon\" \"wait-on http://localhost:3000/api/ && vite\"", "fullstack:dev": "concurrently \"nodemon\" \"wait-on http://localhost:3000/api/ && vite\"",
"fullstack:build": "npm run vite:build && npm run server:build" "fullstack:build": "npm run vite:build && npm run server:build",
"ts": "tsc -p tsconfig.node.json --composite false && npm run fullstack:build",
"electron:dev": "npm run ts && electron .",
"electron:build": "npm run vite:build && npm run ts",
"electron:preview": "npm run vite:build && npm run ts && electron .",
"builder:build": "electron-builder",
"builder:mac": "electron-builder --mac",
"builder:win": "electron-builder -w"
}, },
"nodemonConfig": { "nodemonConfig": {
"watch": [ "watch": [
@@ -23,11 +37,10 @@
"@vueuse/core": "^11.1.0", "@vueuse/core": "^11.1.0",
"axios": "^1.7.7", "axios": "^1.7.7",
"body-parser": "^1.20.2", "body-parser": "^1.20.2",
"concurrently": "^9.0.1",
"cors": "^2.8.5", "cors": "^2.8.5",
"electron-squirrel-startup": "^1.0.1",
"express": "^4.21.1", "express": "^4.21.1",
"moment": "^2.30.1", "moment": "^2.30.1",
"momentjs": "^2.0.0",
"pinia": "^2.2.4", "pinia": "^2.2.4",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",
"sequelize": "^6.37.4", "sequelize": "^6.37.4",
@@ -41,13 +54,19 @@
"wait-on": "^8.0.1" "wait-on": "^8.0.1"
}, },
"devDependencies": { "devDependencies": {
"@electron-toolkit/tsconfig": "^1.0.1",
"@electron/fuses": "^1.8.0",
"@types/cors": "^2.8.17", "@types/cors": "^2.8.17",
"@types/express": "^4.17.21", "@types/express": "^4.17.21",
"@types/node": "^22.7.6", "@types/node": "^22.7.6",
"@vitejs/plugin-vue": "^5.1.4", "@vitejs/plugin-vue": "^5.1.4",
"concurrently": "^9.0.1",
"copyfiles": "^2.4.1",
"electron": "^33.0.2",
"electron-builder": "^25.1.8",
"nodemon": "^3.1.7", "nodemon": "^3.1.7",
"rimraf": "^6.0.1",
"vite": "^5.4.9", "vite": "^5.4.9",
"vue-svg-loader": "^0.16.0", "vue-tsc": "^2.1.10"
"vue-template-compiler": "^2.7.16"
} }
} }

View File

@@ -1,9 +1,9 @@
import { createRouter, createWebHistory } from 'vue-router' import { createRouter, createWebHashHistory } from 'vue-router'
import routes from './../router/routes' import routes from './../router/routes'
// Router configuration // Router configuration
const router = createRouter({ const router = createRouter({
history: createWebHistory(), history: createWebHashHistory(),
routes routes
}) })

View File

@@ -1,6 +1,9 @@
{ {
"files": [], "files": [],
"references": [ "references": [
{
"path": "./tsconfig.node.json"
},
{ {
"path": "./tsconfig.web.json" "path": "./tsconfig.web.json"
}, },

View File

@@ -0,0 +1,10 @@
{
"include": [
"electron/*",
],
"compilerOptions": {
"composite": true,
"isolatedModules": false,
"outDir": "build/src/electron"
}
}

View File

@@ -14,6 +14,7 @@
"exclude": ["node_modules", "dist"], "exclude": ["node_modules", "dist"],
"include": [ "include": [
"backend/**/*.ts", "backend/**/*.ts",
"backend/**/*.json" "backend/**/*.json",
"backend/images/**/**/*"
] ]
} }