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
|
||||
node_modules
|
||||
package-lock.json
|
||||
app.json
|
||||
mod
|
||||
dist
|
||||
tmp
|
||||
logs/*
|
||||
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
|
||||
|
||||
( 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
|
||||
[ -d tmp ] && rm -rf tmp
|
||||
|
||||
|
|
|
|||
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": {
|
||||
"@fortawesome/fontawesome-free": "^6.1.1",
|
||||
"@gridspace/app-server": "^0.0.10",
|
||||
"@gridspace/net-level-client": "^0.2.3",
|
||||
"@tweenjs/tween.js": "^16.6.0",
|
||||
"base64-js": "^1.5.1",
|
||||
|
|
@ -30,6 +31,7 @@
|
|||
"connect": "^3.7.0",
|
||||
"earcut": "^2.2.3",
|
||||
"express-useragent": "^1.0.13",
|
||||
"fs-extra": "^11.2.0",
|
||||
"jszip": "^3.7.1",
|
||||
"moment": "^2.29.4",
|
||||
"serve-static": "^1.14.1",
|
||||
|
|
@ -40,9 +42,51 @@
|
|||
"ws": "^7.5.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@gridspace/app-server": "^0.0.7"
|
||||
"electron": "latest",
|
||||
"electron-builder": "latest"
|
||||
},
|
||||
"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