add electron build
This commit is contained in:
parent
87b251bedc
commit
7e8838da1c
8 changed files with 164 additions and 10 deletions
36
.github/workflows/build.yml
vendored
Normal file
36
.github/workflows/build.yml
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
name: Build Electron App
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Build Electron app
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: kiri-${{ matrix.os }}-${{ github.ref_name }}
|
||||||
|
path: dist/
|
||||||
|
|
||||||
9
.gitignore
vendored
9
.gitignore
vendored
|
|
@ -1,8 +1,9 @@
|
||||||
mod
|
|
||||||
tmp
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules
|
node_modules
|
||||||
package-lock.json
|
mod
|
||||||
app.json
|
dist
|
||||||
|
tmp
|
||||||
logs/*
|
logs/*
|
||||||
data/*
|
data/*
|
||||||
|
package-lock.json
|
||||||
|
app.json
|
||||||
|
|
|
||||||
10
app-el-prep.js
Normal file
10
app-el-prep.js
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const srcDir = path.join(__dirname, 'src');
|
||||||
|
const srcTmp = path.join(__dirname, 'tmp/src');
|
||||||
|
fs.copySync(srcDir, srcTmp, { dereference: true });
|
||||||
|
|
||||||
|
const webDir = path.join(__dirname, 'web');
|
||||||
|
const webTmp = path.join(__dirname, 'tmp/web');
|
||||||
|
fs.copySync(webDir, webTmp, { dereference: true });
|
||||||
59
app-el.js
Normal file
59
app-el.js
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
const { app, BrowserWindow } = require('electron');
|
||||||
|
const path = require('path');
|
||||||
|
const server = require('@gridspace/app-server');
|
||||||
|
|
||||||
|
const basDir = __dirname;
|
||||||
|
const usrDir = app.getPath("userData");
|
||||||
|
const appDir = path.join(usrDir, 'apps/gs');
|
||||||
|
const cnfDir = path.join(appDir, 'conf');
|
||||||
|
const logDir = path.join(appDir, 'logs');
|
||||||
|
const datDir = path.join(appDir, 'data');
|
||||||
|
const debug = process.argv.slice(2).map(v => v.replaceAll('-','')).contains('debug');
|
||||||
|
const devel = process.argv.slice(2).map(v => v.replaceAll('-','')).contains('devel');
|
||||||
|
|
||||||
|
// console.log({ appDir, usrDir, logDir, datDir, basDir });
|
||||||
|
// console.log({ argv: process.argv, debug, devel });
|
||||||
|
// console.log({
|
||||||
|
// cwd: process.cwd(),
|
||||||
|
// dir: require('fs').readdirSync('.'),
|
||||||
|
// out: require('fs').readdirSync(appDir),
|
||||||
|
// ___: require('fs').readdirSync(basDir)
|
||||||
|
// });
|
||||||
|
|
||||||
|
server({
|
||||||
|
single: true,
|
||||||
|
apps: basDir,
|
||||||
|
data: datDir,
|
||||||
|
conf: cnfDir,
|
||||||
|
logs: logDir,
|
||||||
|
debug
|
||||||
|
});
|
||||||
|
|
||||||
|
function createWindow() {
|
||||||
|
const mainWindow = new BrowserWindow({
|
||||||
|
width: 1200,
|
||||||
|
height: 900,
|
||||||
|
webPreferences: {
|
||||||
|
// preload: path.join(__dirname, 'preload.js')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mainWindow.loadURL('http://localhost:8080/kiri');
|
||||||
|
|
||||||
|
if (devel) {
|
||||||
|
console.log("opening developer tools");
|
||||||
|
mainWindow.webContents.openDevTools();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
app.on('ready', createWindow);
|
||||||
|
app.on('window-all-closed', () => {
|
||||||
|
if (process.platform !== 'darwin') {
|
||||||
|
app.quit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
app.on('activate', () => {
|
||||||
|
if (BrowserWindow.getAllWindows().length === 0) {
|
||||||
|
createWindow();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
( curl https://static.grid.space/gapp/manifold.js > src/ext/manifold.js ) > /dev/null 2>&1
|
[ -d tmp ] && rm -rf tmp
|
||||||
( curl https://static.grid.space/gapp/manifold.wasm > src/wasm/manifold.wasm ) > /dev/null 2>&1
|
|
||||||
|
|
|
||||||
5
bin/npm-pre
Executable file
5
bin/npm-pre
Executable file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
( curl https://static.grid.space/gapp/manifold.js > src/ext/manifold.js ) > /dev/null 2>&1
|
||||||
|
( curl https://static.grid.space/gapp/manifold.wasm > src/wasm/manifold.wasm ) > /dev/null 2>&1
|
||||||
|
|
||||||
50
package.json
50
package.json
|
|
@ -22,6 +22,7 @@
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-free": "^6.1.1",
|
"@fortawesome/fontawesome-free": "^6.1.1",
|
||||||
|
"@gridspace/app-server": "^0.0.10",
|
||||||
"@gridspace/net-level-client": "^0.2.3",
|
"@gridspace/net-level-client": "^0.2.3",
|
||||||
"@tweenjs/tween.js": "^16.6.0",
|
"@tweenjs/tween.js": "^16.6.0",
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
|
|
@ -30,6 +31,7 @@
|
||||||
"connect": "^3.7.0",
|
"connect": "^3.7.0",
|
||||||
"earcut": "^2.2.3",
|
"earcut": "^2.2.3",
|
||||||
"express-useragent": "^1.0.13",
|
"express-useragent": "^1.0.13",
|
||||||
|
"fs-extra": "^11.2.0",
|
||||||
"jszip": "^3.7.1",
|
"jszip": "^3.7.1",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"serve-static": "^1.14.1",
|
"serve-static": "^1.14.1",
|
||||||
|
|
@ -40,9 +42,51 @@
|
||||||
"ws": "^7.5.5"
|
"ws": "^7.5.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gridspace/app-server": "^0.0.7"
|
"electron": "latest",
|
||||||
|
"electron-builder": "latest"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "bin/npm-post"
|
"start": "electron .",
|
||||||
|
"build": "npm run prebuild && electron-builder",
|
||||||
|
"build-debug": "npm run prebuild && DEBUG=electron-builder electron-builder",
|
||||||
|
"prebuild": "node app-el-prep.js",
|
||||||
|
"postbuild": "bin/npm-post",
|
||||||
|
"preinstall": "bin/npm-pre"
|
||||||
|
},
|
||||||
|
"main": "app-el.js",
|
||||||
|
"build": {
|
||||||
|
"appId": "space.grid.kiri",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"from": "tmp/src",
|
||||||
|
"to": "src",
|
||||||
|
"filter": [ "**/*" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "tmp/web",
|
||||||
|
"to": "web",
|
||||||
|
"filter": [ "**/*" ]
|
||||||
|
},
|
||||||
|
"conf/**/*",
|
||||||
|
"data/**/*",
|
||||||
|
"dist/**/*",
|
||||||
|
"app-el.js",
|
||||||
|
"app.js",
|
||||||
|
"package.json"
|
||||||
|
],
|
||||||
|
"extraFiles": [
|
||||||
|
],
|
||||||
|
"directories": {
|
||||||
|
"output": "dist"
|
||||||
|
},
|
||||||
|
"win": {
|
||||||
|
"target": "nsis"
|
||||||
|
},
|
||||||
|
"mac": {
|
||||||
|
"target": "dmg"
|
||||||
|
},
|
||||||
|
"linux": {
|
||||||
|
"target": "AppImage"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../../node_modules/@jscad/modeling/dist/jscad-modeling.min.js
|
|
||||||
Loading…
Reference in a new issue