62 lines
1.4 KiB
Bash
62 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Сборка Alpine.js для фронтенда LPON.RU
|
|
# Запуск из корня проекта: bash ./scripts/build-alpine.sh
|
|
|
|
set -euo pipefail
|
|
|
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
ALPINE_DIR="$PROJECT_ROOT/frontend-assembly/alpine"
|
|
OUTPUT_DIR="$PROJECT_ROOT/public/static/js"
|
|
|
|
log() {
|
|
printf '[alpine] %s\n' "$*"
|
|
}
|
|
|
|
fail() {
|
|
printf '[alpine] %s\n' "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
cleanup() {
|
|
rm -rf "$ALPINE_DIR/src" "$ALPINE_DIR/node_modules"
|
|
}
|
|
|
|
trap cleanup EXIT INT TERM
|
|
|
|
if ! command -v npm >/dev/null 2>&1; then
|
|
fail 'Не найден `npm`. Установи Node.js и повтори сборку.'
|
|
fi
|
|
|
|
if [[ ! -f "$ALPINE_DIR/package.json" ]]; then
|
|
fail "Не найден package.json: $ALPINE_DIR/package.json"
|
|
fi
|
|
|
|
if [[ ! -f "$ALPINE_DIR/package-lock.json" ]]; then
|
|
fail "Не найден package-lock.json: $ALPINE_DIR/package-lock.json"
|
|
fi
|
|
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
log "Создаю entry point для Alpine.js"
|
|
|
|
# src/alpine.js (entry point)
|
|
mkdir -p "$ALPINE_DIR/src"
|
|
cat > "$ALPINE_DIR/src/alpine.js" <<'EOF'
|
|
import Alpine from 'alpinejs';
|
|
|
|
Alpine.start();
|
|
|
|
export default Alpine;
|
|
EOF
|
|
|
|
log "СОБИРАЮ Alpine.js"
|
|
cd "$ALPINE_DIR"
|
|
|
|
log 'Устанавливаю зависимости через npm ci'
|
|
npm ci
|
|
|
|
log 'Собираю JavaScript'
|
|
npm run build
|
|
|
|
log 'ГОТОВО! Результат: '"$OUTPUT_DIR/alpine.min.js"
|