Spaces:
Paused
Paused
File size: 3,095 Bytes
5a81b95 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | /**
* Build script to copy the React frontend build to the Electron app
* This runs as part of the Electron build process
*/
const fs = require('fs');
const path = require('path');
// Source: The built React frontend
const srcDir = path.join(__dirname, '..', '..', 'dist');
// Destination: The Electron renderer folder
const destDir = path.join(__dirname, '..', 'renderer', 'dist');
/**
* Recursively copy directory contents
*/
function copyDir(src, dest) {
// Create destination directory if it doesn't exist
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true });
}
const entries = fs.readdirSync(src, { withFileTypes: true });
for (const entry of entries) {
const srcPath = path.join(src, entry.name);
const destPath = path.join(dest, entry.name);
if (entry.isDirectory()) {
copyDir(srcPath, destPath);
} else {
fs.copyFileSync(srcPath, destPath);
}
}
}
/**
* Main function
*/
function main() {
console.log('📦 Copying frontend build to Electron app...');
console.log(` Source: ${srcDir}`);
console.log(` Destination: ${destDir}`);
// Check if source directory exists
if (!fs.existsSync(srcDir)) {
console.error('❌ Error: Frontend build not found!');
console.error(' Please run "npm run build:frontend" first');
console.error(` Expected path: ${srcDir}`);
process.exit(1);
}
// Check if index.html exists in source
const indexPath = path.join(srcDir, 'index.html');
if (!fs.existsSync(indexPath)) {
console.error('❌ Error: index.html not found in build!');
console.error(' The build may be corrupted or incomplete');
process.exit(1);
}
// Clean destination directory if it exists
if (fs.existsSync(destDir)) {
console.log(' Cleaning existing build...');
fs.rmSync(destDir, { recursive: true, force: true });
}
// Copy the build
console.log(' Copying files...');
copyDir(srcDir, destDir);
// Verify copy was successful
const destIndex = path.join(destDir, 'index.html');
if (fs.existsSync(destIndex)) {
const srcFiles = countFiles(srcDir);
const destFiles = countFiles(destDir);
console.log(`✅ Successfully copied ${destFiles} files`);
if (srcFiles !== destFiles) {
console.warn(`⚠️ Warning: Source has ${srcFiles} files, destination has ${destFiles}`);
}
} else {
console.error('❌ Error: Copy failed - index.html not found in destination');
process.exit(1);
}
console.log('📦 Frontend copy complete!');
}
/**
* Count files in a directory recursively
*/
function countFiles(dir) {
let count = 0;
const entries = fs.readdirSync(dir, { withFileTypes: true });
for (const entry of entries) {
if (entry.isDirectory()) {
count += countFiles(path.join(dir, entry.name));
} else {
count++;
}
}
return count;
}
// Run the script
main();
|