- Testimonial Monique Dubbelman toegevoegd met lokale avatar - Hero: 8 doorgestreept, 7 plekken beschikbaar - preflight.sh: pre-deploy checks (lint, build, asset paden, public/ bestanden) - deploy.sh: draait preflight automatisch voor elke deploy - CLAUDE.md: verificatie werkwijze en static assets conventie gedocumenteerd Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
85 lines
2.4 KiB
Bash
Executable file
85 lines
2.4 KiB
Bash
Executable file
#!/bin/bash
|
|
# Preflight checks - draait voor elke deploy om veelvoorkomende fouten te vangen
|
|
#
|
|
# Checks:
|
|
# 1. ESLint
|
|
# 2. Vite build (syntax errors, missing imports)
|
|
# 3. Hardcoded asset paden die BASE_URL missen
|
|
# 4. Gerefereerde public/ bestanden bestaan daadwerkelijk
|
|
|
|
set -e
|
|
|
|
ERRORS=0
|
|
|
|
echo "=== Preflight Checks ==="
|
|
echo ""
|
|
|
|
# 1. Lint check
|
|
echo "[1/4] ESLint..."
|
|
if npm run lint --silent 2>&1; then
|
|
echo " OK"
|
|
else
|
|
echo " WAARSCHUWING: lint errors gevonden (niet-blokkerend)"
|
|
fi
|
|
echo ""
|
|
|
|
# 2. Build check
|
|
echo "[2/4] Vite build..."
|
|
npm run build --silent
|
|
echo " OK"
|
|
echo ""
|
|
|
|
# 3. Check voor hardcoded asset paden zonder BASE_URL
|
|
# Zoekt naar src= of avatar: paden die beginnen met "/" gevolgd door een bestandsnaam
|
|
# maar NIET import.meta.env.BASE_URL gebruiken
|
|
echo "[3/4] Asset paden check (BASE_URL)..."
|
|
BAD_PATHS=$(grep -rn 'src=\s*"\/[a-zA-Z0-9]' src/ --include="*.jsx" --include="*.js" 2>/dev/null || true)
|
|
BAD_AVATAR=$(grep -rn "avatar:\s*[\"']/[a-zA-Z0-9]" src/ --include="*.jsx" --include="*.js" 2>/dev/null || true)
|
|
|
|
if [ -n "$BAD_PATHS" ] || [ -n "$BAD_AVATAR" ]; then
|
|
echo " FOUT: Hardcoded asset paden gevonden zonder BASE_URL prefix!"
|
|
echo " Deze werken lokaal maar breken op productie (/workshopclaudecode/)."
|
|
echo ""
|
|
[ -n "$BAD_PATHS" ] && echo "$BAD_PATHS" | sed 's/^/ /'
|
|
[ -n "$BAD_AVATAR" ] && echo "$BAD_AVATAR" | sed 's/^/ /'
|
|
echo ""
|
|
echo " Fix: gebruik \${import.meta.env.BASE_URL}bestandsnaam.jpg"
|
|
ERRORS=$((ERRORS + 1))
|
|
else
|
|
echo " OK"
|
|
fi
|
|
echo ""
|
|
|
|
# 4. Check dat gerefereerde bestanden in public/ bestaan
|
|
echo "[4/4] Public assets bestaan..."
|
|
MISSING=0
|
|
for file in public/*; do
|
|
[ -f "$file" ] || continue
|
|
done
|
|
|
|
# Zoek alle BASE_URL referenties en check of het bestand bestaat in public/
|
|
# Matcht alleen bestandsnamen (letters, cijfers, punt, streepje, underscore)
|
|
REFS=$(grep -roh 'BASE_URL}[a-zA-Z0-9._-]*' src/ --include="*.jsx" --include="*.js" 2>/dev/null | sed 's/BASE_URL}//' | grep -v '^$' || true)
|
|
for ref in $REFS; do
|
|
if [ ! -f "public/$ref" ]; then
|
|
echo " FOUT: public/$ref bestaat niet (gerefereerd in code)"
|
|
MISSING=$((MISSING + 1))
|
|
fi
|
|
done
|
|
|
|
if [ "$MISSING" -eq 0 ]; then
|
|
echo " OK"
|
|
else
|
|
ERRORS=$((ERRORS + MISSING))
|
|
fi
|
|
echo ""
|
|
|
|
# Resultaat
|
|
echo "=== Resultaat ==="
|
|
if [ "$ERRORS" -gt 0 ]; then
|
|
echo "GEFAALD: $ERRORS fout(en) gevonden. Fix deze voor deploy."
|
|
exit 1
|
|
else
|
|
echo "ALLES OK - klaar voor deploy."
|
|
exit 0
|
|
fi
|