Browse Source

chore: update in preparation for production mode

pull/126/head
Matthew Raymer 1 week ago
parent
commit
12025d6f21
  1. 36
      BUILDING.md
  2. 23
      package.json
  3. 8
      src/electron/main.js

36
BUILDING.md

@ -42,23 +42,45 @@ To build for web deployment:
## Desktop Build (Electron)
To build the desktop application:
### Building for Linux
0. You must web build first:
1. First build the web assets:
```bash
npm run build
```
1. Run the Electron build:
2. Package the Electron app for Linux:
```bash
npm run build:electron
# For AppImage (recommended)
npm run electron:build-linux
# For .deb package
npm run electron:build-linux-deb
```
2. The packaged applications will be in `dist-electron-packages/`:
- AppImage: `dist-electron-packages/TimeSafari-x.x.x.AppImage`
- DEB: `dist-electron-packages/timesafari_x.x.x_amd64.deb`
### Running the Packaged App
- AppImage: Make executable and run
```bash
chmod +x dist-electron-packages/TimeSafari-*.AppImage
./dist-electron-packages/TimeSafari-*.AppImage
```
- DEB: Install and run
```bash
sudo dpkg -i dist-electron-packages/timesafari_*_amd64.deb
timesafari
```
2. The built files will be in `dist-electron`.
### Development Testing
3. To run the desktop app:
For testing the Electron build before packaging:
```bash
npx electron dist-electron
npm run electron:dev
```
## Mobile Builds (Capacitor)

23
package.json

@ -18,8 +18,12 @@
"build:electron": "npm run clean:electron && vite build --mode electron && node scripts/build-electron.js",
"build:capacitor": "vite build --mode capacitor",
"build:web": "vite build",
"electron:dev": "npm run build:electron && electron dist-electron --inspect",
"electron:start": "electron dist-electron"
"electron:dev": "npm run build && electron dist-electron",
"electron:start": "electron dist-electron",
"electron:build-linux": "electron-builder --linux AppImage",
"electron:build-linux-deb": "electron-builder --linux deb",
"build:electron-prod": "NODE_ENV=production npm run build:electron",
"electron:build-linux-prod": "npm run build:electron-prod && electron-builder --linux AppImage"
},
"dependencies": {
"@capacitor/android": "^6.2.0",
@ -122,13 +126,14 @@
},
"main": "./dist-electron/main.js",
"build": {
"appId": "app.timesafari.app",
"appId": "org.timesafari.app",
"productName": "TimeSafari",
"directories": {
"output": "dist-electron-build"
"output": "dist-electron-packages"
},
"files": [
"dist-electron/**/*"
"dist-electron/**/*",
"src/electron/**/*"
],
"extraResources": [
{
@ -137,11 +142,9 @@
}
],
"linux": {
"target": [
"AppImage"
],
"category": "Utility",
"icon": "build/icons"
"target": ["AppImage", "deb"],
"category": "Office",
"icon": "build/icon.png"
},
"asar": true
}

8
src/electron/main.js

@ -39,7 +39,6 @@ function createWindow() {
},
(details, callback) => {
let url = details.url;
console.log("Intercepting asset request:", url);
// Handle paths that don't start with file://
if (!url.startsWith("file://") && url.includes("/assets/")) {
@ -56,7 +55,6 @@ function createWindow() {
: `file://${__dirname}`;
const assetPath = url.split("/assets/")[1];
const newUrl = `${baseDir}/www/assets/${assetPath}`;
console.log("Redirecting to:", newUrl);
callback({ redirectURL: newUrl });
return;
}
@ -64,6 +62,8 @@ function createWindow() {
callback({}); // No redirect for other URLs
},
);
if (isDev) {
// Debug info
console.log("Debug Info:");
console.log("Running in dev mode:", isDev);
@ -72,11 +72,15 @@ function createWindow() {
console.log("App path:", app.getAppPath());
console.log("__dirname:", __dirname);
console.log("process.cwd():", process.cwd());
}
const indexPath = path.join(__dirname, "www", "index.html");
if (isDev) {
console.log("Loading index from:", indexPath);
console.log("www path:", path.join(__dirname, "www"));
console.log("www assets path:", path.join(__dirname, "www", "assets"));
}
if (!fs.existsSync(indexPath)) {
console.error(`Index file not found at: ${indexPath}`);

Loading…
Cancel
Save