An easy-to-use platform for EEG experimentation in the classroom
at main 51 lines 2.0 kB view raw
1/** 2 * Post-build script for the EEG viewer assets. 3 * 4 * electron-vite's preload and renderer builds only support a single entry 5 * point each. This script uses esbuild directly to compile the viewer 6 * preload and the viewer renderer page after the main electron-vite build. 7 * 8 * Run automatically via the "postbuild" npm lifecycle hook. 9 */ 10import { build } from 'esbuild'; 11import { readFileSync, writeFileSync, mkdirSync } from 'fs'; 12import { resolve, join } from 'path'; 13import { fileURLToPath } from 'url'; 14 15const __dirname = fileURLToPath(new URL('.', import.meta.url)); 16const root = resolve(__dirname, '../..'); 17 18// ---------------------------------------------------------------- 19// 1. Viewer preload: src/preload/viewer.ts → out/preload/viewer.js 20// ---------------------------------------------------------------- 21await build({ 22 entryPoints: [resolve(root, 'src/preload/viewer.ts')], 23 bundle: true, 24 platform: 'node', 25 external: ['electron'], 26 outfile: resolve(root, 'out/preload/viewer.js'), 27 format: 'cjs', 28}); 29 30// ---------------------------------------------------------------- 31// 2. Viewer renderer: src/renderer/viewer.ts → out/renderer/viewer.js 32// ---------------------------------------------------------------- 33const rendererOut = resolve(root, 'out/renderer'); 34mkdirSync(rendererOut, { recursive: true }); 35 36await build({ 37 entryPoints: [resolve(root, 'src/renderer/viewer.ts')], 38 bundle: true, 39 platform: 'browser', 40 outfile: join(rendererOut, 'viewer.js'), 41 format: 'esm', 42}); 43 44// ---------------------------------------------------------------- 45// 3. viewer.html: copy src → out, update script src .ts → .js 46// ---------------------------------------------------------------- 47let html = readFileSync(resolve(root, 'src/renderer/viewer.html'), 'utf-8'); 48html = html.replace('src="./viewer.ts"', 'src="./viewer.js"'); 49writeFileSync(join(rendererOut, 'viewer.html'), html); 50 51console.log('Viewer builds complete: out/preload/viewer.js, out/renderer/viewer.{js,html}');