Electron & Electron Builder
This commit is contained in:
37
software/electron-builder.json
Normal file
37
software/electron-builder.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
46
software/electron/index.ts
Normal file
46
software/electron/index.ts
Normal 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)
|
||||||
|
})
|
||||||
|
});
|
||||||
10
software/electron/preload.ts
Normal file
10
software/electron/preload.ts
Normal 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])
|
||||||
|
}
|
||||||
|
})
|
||||||
9160
software/package-lock.json
generated
9160
software/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"files": [],
|
"files": [],
|
||||||
"references": [
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "./tsconfig.node.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.web.json"
|
"path": "./tsconfig.web.json"
|
||||||
},
|
},
|
||||||
|
|||||||
10
software/tsconfig.node.json
Normal file
10
software/tsconfig.node.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"include": [
|
||||||
|
"electron/*",
|
||||||
|
],
|
||||||
|
"compilerOptions": {
|
||||||
|
"composite": true,
|
||||||
|
"isolatedModules": false,
|
||||||
|
"outDir": "build/src/electron"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
"exclude": ["node_modules", "dist"],
|
"exclude": ["node_modules", "dist"],
|
||||||
"include": [
|
"include": [
|
||||||
"backend/**/*.ts",
|
"backend/**/*.ts",
|
||||||
"backend/**/*.json"
|
"backend/**/*.json",
|
||||||
|
"backend/images/**/**/*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user