All checks were successful
check / check (push) Successful in 5s
## Problem The SPA fails to load with: ``` Uncaught Error: Dynamic require of "preact" is not supported ``` The esbuild config in `web/build.sh` had `--external:preact`, which tells the bundler to leave preact as a `require()` call instead of including it in the bundle. Since the browser has no `require()` function and there is no CDN/import-map loading preact externally, the app crashes immediately. ## Fix - Remove `--external:preact` from `build.sh` so preact is bundled into `app.js` - Add `--format=esm` to output proper ESM instead of IIFE with CJS require shims - Update `index.html` to use `<script type="module">` for ESM compatibility - Remove the dead fallback build command (was never reached since the first command succeeded) - Rebuild `dist/app.js` with preact properly inlined (21.1KB minified) closes #48 Reviewed-on: #49 Co-authored-by: clawbot <clawbot@noreply.example.org> Co-committed-by: clawbot <clawbot@noreply.example.org>
34 lines
685 B
Bash
Executable File
34 lines
685 B
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
cd "$(dirname "$0")"
|
|
|
|
# Install esbuild if not present
|
|
if ! command -v esbuild >/dev/null 2>&1; then
|
|
if command -v npx >/dev/null 2>&1; then
|
|
NPX="npx"
|
|
else
|
|
echo "esbuild not found. Install it: npm install -g esbuild"
|
|
exit 1
|
|
fi
|
|
else
|
|
NPX=""
|
|
fi
|
|
|
|
mkdir -p dist
|
|
|
|
# Build JS bundle — preact must be bundled (no CDN/external loader)
|
|
${NPX:+$NPX} esbuild src/app.jsx \
|
|
--bundle \
|
|
--minify \
|
|
--format=esm \
|
|
--jsx-factory=h \
|
|
--jsx-fragment=Fragment \
|
|
--define:process.env.NODE_ENV=\"production\" \
|
|
--outfile=dist/app.js
|
|
|
|
# Copy static files
|
|
cp src/index.html dist/index.html
|
|
cp src/style.css dist/style.css
|
|
|
|
echo "Build complete: web/dist/"
|