feat(build): integrate frontend build into backend binary and update scripts
This commit is contained in:
+17
-14
@@ -1,27 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Builds the Windows (amd64) binary.
|
||||
# ./build-win-x86_64.sh backend only
|
||||
# ./build-win-x86_64.sh --frontend also build the Vue frontend
|
||||
#
|
||||
# The frontend is needed at runtime: web/ serves it from frontend/dist.
|
||||
# The Vue console is built first and embedded into the binary (web/dist, see
|
||||
# web/embed.go), so the executable serves the whole frontend on its own —
|
||||
# neither frontend/ nor web/dist/ is needed where it runs.
|
||||
set -euo pipefail
|
||||
|
||||
# Build from the repository root, however the script was invoked.
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
BUILD_FRONTEND=0
|
||||
if [ "${1:-}" = "--frontend" ]; then
|
||||
BUILD_FRONTEND=1
|
||||
fi
|
||||
|
||||
if [ "$BUILD_FRONTEND" = "1" ]; then
|
||||
echo "Building frontend..."
|
||||
(
|
||||
cd frontend
|
||||
echo "Building frontend..."
|
||||
(
|
||||
cd frontend
|
||||
# node_modules is gitignored, so a fresh checkout (CI included) installs
|
||||
# from the lockfile; a warm tree only rebuilds.
|
||||
if [ ! -d node_modules ]; then
|
||||
npm ci
|
||||
npm run build
|
||||
)
|
||||
fi
|
||||
npm run build
|
||||
)
|
||||
|
||||
# go:embed on web/dist fails anyway, but this names the real problem.
|
||||
if [ ! -f web/dist/index.html ]; then
|
||||
echo "Frontend build produced no web/dist/index.html" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Building for Windows (amd64)..."
|
||||
|
||||
Reference in New Issue
Block a user