#!/usr/bin/env node /** * Build the Fabric web frontend and copy the static bundle into www/ so the * Capacitor Android app ships it. Capacitor serves www/ from http://localhost * with SPA index.html fallback, so the standard (absolute-base) build + * BrowserRouter work as-is. * * Fabric.Frontend is the sibling submodule under the parent Fabric repo. */ import { execSync } from 'node:child_process' import fs from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const ROOT = path.resolve(__dirname, '..') const FRONTEND = path.resolve(ROOT, '..', 'Fabric.Frontend') const SRC = path.join(FRONTEND, 'dist') const DEST = path.join(ROOT, 'www') if (!fs.existsSync(FRONTEND)) { console.error(`[build-web] Fabric.Frontend not found at ${FRONTEND}`) process.exit(1) } console.log('[build-web] building frontend…') execSync('npm install --no-audit --no-fund', { cwd: FRONTEND, stdio: 'inherit' }) execSync('npm run build', { cwd: FRONTEND, stdio: 'inherit' }) if (!fs.existsSync(path.join(SRC, 'index.html'))) { console.error(`[build-web] expected ${SRC}/index.html after build`) process.exit(1) } fs.rmSync(DEST, { recursive: true, force: true }) fs.cpSync(SRC, DEST, { recursive: true }) console.log(`[build-web] copied ${SRC} -> ${DEST}`)