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