forked from trent_larson/crowd-funder-for-time-pwa
docs: update electron build instructions and fix electron asset paths
- Add web build prerequisite step to electron build docs - Update electron run command to use npx - Fix electron asset loading with improved path handling - Add request interception for proper asset resolution - Remove service worker files from electron build - Improve debug logging for electron builds
This commit is contained in:
@@ -44,6 +44,11 @@ To build for web deployment:
|
|||||||
|
|
||||||
To build the desktop application:
|
To build the desktop application:
|
||||||
|
|
||||||
|
0. You must web build first:
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
1. Run the Electron build:
|
1. Run the Electron build:
|
||||||
```bash
|
```bash
|
||||||
npm run build:electron
|
npm run build:electron
|
||||||
@@ -53,7 +58,7 @@ To build the desktop application:
|
|||||||
|
|
||||||
3. To run the desktop app:
|
3. To run the desktop app:
|
||||||
```bash
|
```bash
|
||||||
electron dist-electron
|
npx electron dist-electron
|
||||||
```
|
```
|
||||||
|
|
||||||
## Mobile Builds (Capacitor)
|
## Mobile Builds (Capacitor)
|
||||||
|
|||||||
@@ -18,12 +18,26 @@ async function main() {
|
|||||||
const indexPath = path.join(wwwDir, 'index.html');
|
const indexPath = path.join(wwwDir, 'index.html');
|
||||||
let indexContent = await fs.readFile(indexPath, 'utf8');
|
let indexContent = await fs.readFile(indexPath, 'utf8');
|
||||||
|
|
||||||
// Fix paths in index.html
|
// More comprehensive path fixing
|
||||||
indexContent = indexContent
|
indexContent = indexContent
|
||||||
|
// Fix absolute paths to be relative
|
||||||
.replace(/src="\//g, 'src="\./')
|
.replace(/src="\//g, 'src="\./')
|
||||||
.replace(/href="\//g, 'href="\./')
|
.replace(/href="\//g, 'href="\./')
|
||||||
.replace(/src="\.\.\/assets\//g, 'src="./www/assets/')
|
// Fix modulepreload paths
|
||||||
.replace(/href="\.\.\/assets\//g, 'href="./www/assets/');
|
.replace(/<link [^>]*rel="modulepreload"[^>]*href="\/assets\//g, '<link rel="modulepreload" as="script" crossorigin="" href="./assets/')
|
||||||
|
.replace(/<link [^>]*rel="modulepreload"[^>]*href="\.\/assets\//g, '<link rel="modulepreload" as="script" crossorigin="" href="./assets/')
|
||||||
|
// Fix stylesheet paths
|
||||||
|
.replace(/<link [^>]*rel="stylesheet"[^>]*href="\/assets\//g, '<link rel="stylesheet" crossorigin="" href="./assets/')
|
||||||
|
.replace(/<link [^>]*rel="stylesheet"[^>]*href="\.\/assets\//g, '<link rel="stylesheet" crossorigin="" href="./assets/')
|
||||||
|
// Fix script paths
|
||||||
|
.replace(/src="\/assets\//g, 'src="./assets/')
|
||||||
|
.replace(/src="\.\/assets\//g, 'src="./assets/')
|
||||||
|
// Fix any remaining asset paths
|
||||||
|
.replace(/(['"]\/?)(assets\/)/g, '"./assets/');
|
||||||
|
|
||||||
|
// Debug output
|
||||||
|
console.log('After path fixing, checking for remaining /assets/ paths:', indexContent.includes('/assets/'));
|
||||||
|
console.log('Sample of fixed content:', indexContent.slice(0, 500));
|
||||||
|
|
||||||
await fs.writeFile(indexPath, indexContent);
|
await fs.writeFile(indexPath, indexContent);
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,46 @@ function createWindow() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Always open DevTools for now
|
||||||
|
mainWindow.webContents.openDevTools();
|
||||||
|
|
||||||
|
// Intercept requests to fix asset paths
|
||||||
|
mainWindow.webContents.session.webRequest.onBeforeRequest(
|
||||||
|
{
|
||||||
|
urls: [
|
||||||
|
"file://*/*/assets/*",
|
||||||
|
"file://*/assets/*",
|
||||||
|
"file:///assets/*", // Catch absolute paths
|
||||||
|
"<all_urls>", // Catch all URLs as a fallback
|
||||||
|
],
|
||||||
|
},
|
||||||
|
(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/")) {
|
||||||
|
url = `file://${path.join(__dirname, "www", url)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle absolute paths starting with /assets/
|
||||||
|
if (url.includes("/assets/") && !url.includes("/www/assets/")) {
|
||||||
|
const baseDir = url.includes("dist-electron")
|
||||||
|
? url.substring(
|
||||||
|
0,
|
||||||
|
url.indexOf("/dist-electron") + "/dist-electron".length,
|
||||||
|
)
|
||||||
|
: `file://${__dirname}`;
|
||||||
|
const assetPath = url.split("/assets/")[1];
|
||||||
|
const newUrl = `${baseDir}/www/assets/${assetPath}`;
|
||||||
|
console.log("Redirecting to:", newUrl);
|
||||||
|
callback({ redirectURL: newUrl });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
callback({}); // No redirect for other URLs
|
||||||
|
},
|
||||||
|
);
|
||||||
// Debug info
|
// Debug info
|
||||||
console.log("Debug Info:");
|
console.log("Debug Info:");
|
||||||
console.log("Running in dev mode:", isDev);
|
console.log("Running in dev mode:", isDev);
|
||||||
@@ -34,6 +74,7 @@ function createWindow() {
|
|||||||
console.log("process.cwd():", process.cwd());
|
console.log("process.cwd():", process.cwd());
|
||||||
|
|
||||||
const indexPath = path.join(__dirname, "www", "index.html");
|
const indexPath = path.join(__dirname, "www", "index.html");
|
||||||
|
console.log("Loading index from:", indexPath);
|
||||||
console.log("www path:", path.join(__dirname, "www"));
|
console.log("www path:", path.join(__dirname, "www"));
|
||||||
console.log("www assets path:", path.join(__dirname, "www", "assets"));
|
console.log("www assets path:", path.join(__dirname, "www", "assets"));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user