- vite.config base van /workshopclaudecode/ naar / - index.html canonical en OG/Twitter URLs naar workshopclaudecode.nl - public/.htaccess verwijderd (niet meer nodig zonder Apache) - preflight foutmelding generieker (niet meer hardcoded sub-pad) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
86 lines
2.4 KiB
Bash
Executable file
86 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 " FOUT: lint errors gevonden"
|
|
ERRORS=$((ERRORS + 1))
|
|
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 breken zodra Vite base path verandert (bijv. naar een sub-pad)."
|
|
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
|