fix electron builds

This commit is contained in:
Stewart Allen 2025-07-07 22:29:45 -04:00
commit b608f7bf4c
5 changed files with 44 additions and 30 deletions

View file

@ -2,6 +2,7 @@ const { app, shell, session, BrowserWindow } = require('electron');
const path = require('path'); const path = require('path');
const server = require('@gridspace/app-server'); const server = require('@gridspace/app-server');
const pkgd = app.isPackaged;
const basDir = __dirname; const basDir = __dirname;
const usrDir = app.getPath("userData"); const usrDir = app.getPath("userData");
const appDir = path.join(usrDir, 'gapp'); const appDir = path.join(usrDir, 'gapp');
@ -28,9 +29,9 @@ server({
data: datDir, data: datDir,
conf: cnfDir, conf: cnfDir,
logs: logDir, logs: logDir,
cache: path.join(basDir, "data", "cache"),
single: true, single: true,
electron: true, electron: true,
pkgd,
debug debug
}); });

29
app.js
View file

@ -26,7 +26,6 @@ let forceUseCache = false;
let serviceWorker = true; let serviceWorker = true;
let crossOrigin = false; let crossOrigin = false;
let setupFn; let setupFn;
let cacheDir;
let startTime; let startTime;
let oversion; let oversion;
let dversion; let dversion;
@ -71,8 +70,6 @@ function init(mod) {
if (ENV.single) console.log({ cwd: process.cwd(), env: ENV }); if (ENV.single) console.log({ cwd: process.cwd(), env: ENV });
dversion = debug ? `_${version}` : version; dversion = debug ? `_${version}` : version;
cacheDir = ENV.cache || mod.util.datadir("cache");
if (ENV.single) logger.log({ cacheDir });
forceUseCache = ENV.cache ? true : false; forceUseCache = ENV.cache ? true : false;
const approot = PATH.join("main","gapp"); const approot = PATH.join("main","gapp");
@ -80,7 +77,9 @@ function init(mod) {
const callstack = []; const callstack = [];
let xxxx = false; let xxxx = false;
generateDevices(); if (!ENV.electron) {
generateDevices();
}
mod.on.test((req) => { mod.on.test((req) => {
let cookie = cookieValue(req.headers.cookie, "version") || undefined; let cookie = cookieValue(req.headers.cookie, "version") || undefined;
@ -224,12 +223,17 @@ function initModule(mod, file, dir) {
logger: log.new logger: log.new
}, },
inject: (code, file, opt = {}) => { inject: (code, file, opt = {}) => {
const body = fs.readFileSync(dir + '/' + file); const path = mod.dir + '/' + dir + '/' + file;
// console.log({ inject: code, file, opt }); try {
if (opt.first) { const body = fs.readFileSync(path);
append[code] = body.toString() + '\n' + append[code]; // console.log({ inject: code, file, opt });
} else { if (opt.first) {
append[code] += body.toString() + '\n'; append[code] = body.toString() + '\n' + append[code];
} else {
append[code] += body.toString() + '\n';
}
} catch (e) {
console.log({ missing_file: path, dir, mod });
} }
}, },
path: { path: {
@ -388,11 +392,6 @@ function serveWasm(req, res, next) {
// pack/concat device script strings to inject into /code/ scripts // pack/concat device script strings to inject into /code/ scripts
function generateDevices() { function generateDevices() {
if (process.versions.electron) {
// bail when running inside electron
console.log('skipping device generation in electron');
return;
}
let root = PATH.join(dir,"src","kiri-dev"); let root = PATH.join(dir,"src","kiri-dev");
let devs = {}; let devs = {};
fs.readdirSync(root).forEach(type => { fs.readdirSync(root).forEach(type => {

View file

@ -30,8 +30,8 @@ fs.copySync("mods", modsTmp, { dereference: true, filter:(src,dst) => {
} }); } });
// create minified asset cache // create minified asset cache
server({ // server({
electron: true, // electron: true,
dryrun: true, // dryrun: true,
single: true // single: true
}); // });

View file

@ -1,6 +1,6 @@
{ {
"name": "grid-apps", "name": "grid-apps",
"version": "4.2.0", "version": "4.3.0",
"description": "grid.space 3d slicing & modeling tools", "description": "grid.space 3d slicing & modeling tools",
"author": "Stewart Allen <sa@grid.space>", "author": "Stewart Allen <sa@grid.space>",
"license": "MIT", "license": "MIT",
@ -32,7 +32,7 @@
"slicer" "slicer"
], ],
"engines": { "engines": {
"node": ">=18.0.0" "node": ">=22.0.0"
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^6.1.1", "@fortawesome/fontawesome-free": "^6.1.1",
@ -178,8 +178,12 @@
"nsis": { "nsis": {
"oneClick": false, "oneClick": false,
"allowToChangeInstallationDirectory": true, "allowToChangeInstallationDirectory": true,
"differentialPackage": false,
"allowElevation": true "allowElevation": true
}, },
"dmg": {
"writeUpdateInfo": false
},
"mac": { "mac": {
"icon": "bin/GS.icns", "icon": "bin/GS.icns",
"category": "public.app-category.utilities", "category": "public.app-category.utilities",
@ -188,8 +192,7 @@
"entitlements": "bin/electron-entitlements.plist", "entitlements": "bin/electron-entitlements.plist",
"entitlementsInherit": "bin/electron-entitlements.plist", "entitlementsInherit": "bin/electron-entitlements.plist",
"target": [ "target": [
"dmg", "dmg"
"zip"
] ]
}, },
"linux": { "linux": {

View file

@ -47,6 +47,12 @@ async function appendExtraModules(extras, outfile, minify = false) {
console.log(`Appended ${files.length} module(s) to ${outfile}`); console.log(`Appended ${files.length} module(s) to ${outfile}`);
} }
const logOverride = {
'duplicate-class-member': 'silent',
'duplicate-object-key': 'silent',
'direct-eval': 'silent'
};
async function buildApp() { async function buildApp() {
try { try {
// Bundle mesh main app // Bundle mesh main app
@ -62,7 +68,8 @@ async function buildApp() {
platform: 'browser', platform: 'browser',
define: { define: {
'process.env.NODE_ENV': `"${mode}"` 'process.env.NODE_ENV': `"${mode}"`
} },
logOverride
}); });
appendExtraModules(MESH_EXTRAS, MESH_OUTFILE, isProd); appendExtraModules(MESH_EXTRAS, MESH_OUTFILE, isProd);
@ -80,7 +87,8 @@ async function buildApp() {
platform: 'browser', platform: 'browser',
define: { define: {
'process.env.NODE_ENV': `"${mode}"` 'process.env.NODE_ENV': `"${mode}"`
} },
logOverride
}); });
// Bundle kiri main app // Bundle kiri main app
@ -96,7 +104,8 @@ async function buildApp() {
platform: 'browser', platform: 'browser',
define: { define: {
'process.env.NODE_ENV': `"${mode}"` 'process.env.NODE_ENV': `"${mode}"`
} },
logOverride
}); });
appendExtraModules(KIRI_EXTRAS, KIRI_OUTFILE, isProd); appendExtraModules(KIRI_EXTRAS, KIRI_OUTFILE, isProd);
@ -114,7 +123,8 @@ async function buildApp() {
platform: 'browser', platform: 'browser',
define: { define: {
'process.env.NODE_ENV': `"${mode}"` 'process.env.NODE_ENV': `"${mode}"`
} },
logOverride
}); });
// Bundle kiri minion // Bundle kiri minion
@ -130,7 +140,8 @@ async function buildApp() {
platform: 'browser', platform: 'browser',
define: { define: {
'process.env.NODE_ENV': `"${mode}"` 'process.env.NODE_ENV': `"${mode}"`
} },
logOverride
}); });
console.log(`Build completed successfully in ${mode} mode!`); console.log(`Build completed successfully in ${mode} mode!`);