From c385df4a0cbe8f615fd247908cb43fc4056532f3 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 6 May 2026 15:58:02 +0200 Subject: [PATCH 1/2] Add dependency installation check and logging to deploy script - Introduced `install_dependencies_if_needed` function to conditionally install dependencies based on the presence and changes in `package-lock.json`. - Updated the deployment process to log build output to a file for better error tracking. - Modified Nuxt configuration to disable source maps in production and prevent reporting of compressed sizes in Vite builds. --- deploy-production.sh | 66 +++++++++++++++++++++++++++++++++++--------- nuxt.config.js | 11 ++++++-- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/deploy-production.sh b/deploy-production.sh index 0047a64..2bfc2a0 100755 --- a/deploy-production.sh +++ b/deploy-production.sh @@ -64,6 +64,37 @@ install_dependencies() { fi } +install_dependencies_if_needed() { + local cache_dir=".deploy-cache" + local lock_hash_file="$cache_dir/package-lock.sha256" + local current_lock_hash="" + local previous_lock_hash="" + + if [ ! -f "package-lock.json" ]; then + echo " package-lock.json fehlt, führe npm install aus..." + install_dependencies + return 0 + fi + + mkdir -p "$cache_dir" + current_lock_hash="$(sha256sum package-lock.json | awk '{print $1}')" + if [ -f "$lock_hash_file" ]; then + previous_lock_hash="$(cat "$lock_hash_file" 2>/dev/null || true)" + fi + + if [ ! -d "node_modules" ]; then + echo " node_modules fehlt, installiere Dependencies..." + install_dependencies + elif [ "$current_lock_hash" != "$previous_lock_hash" ]; then + echo " package-lock.json geändert, führe npm ci aus..." + install_dependencies + else + echo " package-lock.json unverändert, überspringe npm ci" + fi + + printf '%s\n' "$current_lock_hash" > "$lock_hash_file" +} + use_project_node() { export NVM_DIR="${NVM_DIR:-$HOME/.nvm}" if [ -s "$NVM_DIR/nvm.sh" ]; then @@ -239,7 +270,7 @@ echo "" echo "3. Installing dependencies..." use_project_node ensure_node_version -install_dependencies +install_dependencies_if_needed # 4. Remove old build (but keep data!) echo "" @@ -262,11 +293,16 @@ if [ -d ".output" ]; then echo " ✓ .output gelöscht" fi -# Auch .nuxt Cache löschen für sauberen Build -if [ -d ".nuxt" ]; then - echo " Removing .nuxt cache..." - rm -rf .nuxt - echo " ✓ .nuxt gelöscht" +# .nuxt standardmäßig behalten (beschleunigt Folge-Builds deutlich). +# Für erzwungenen Clean-Build: CLEAN_NUXT_CACHE=1 ./deploy-production.sh +if [ "${CLEAN_NUXT_CACHE:-0}" = "1" ]; then + if [ -d ".nuxt" ]; then + echo " CLEAN_NUXT_CACHE=1 gesetzt: entferne .nuxt cache..." + rm -rf .nuxt + echo " ✓ .nuxt gelöscht" + fi +else + echo " Behalte .nuxt cache für schnelleren Build (CLEAN_NUXT_CACHE=1 für Clean-Build)" fi # Prüfe, ob node_modules vorhanden ist (für npm run build) @@ -289,17 +325,20 @@ if [ ! -f "node_modules/.package-lock.json" ] && [ ! -f "package-lock.json" ]; t install_dependencies fi -# Build mit expliziter Fehlerbehandlung und Output-Capture -BUILD_OUTPUT=$(npm run build 2>&1) -BUILD_EXIT_CODE=$? - -# Zeige Build-Output -echo "$BUILD_OUTPUT" +# Build mit expliziter Fehlerbehandlung und gleichzeitiger Log-Datei +BUILD_LOG_FILE=".deploy-cache/build-$(date +%Y%m%d-%H%M%S).log" +mkdir -p ".deploy-cache" +if npm run build 2>&1 | tee "$BUILD_LOG_FILE"; then + BUILD_EXIT_CODE=0 +else + BUILD_EXIT_CODE=$? +fi if [ "$BUILD_EXIT_CODE" -ne 0 ]; then echo "" echo "ERROR: Build fehlgeschlagen mit Exit-Code $BUILD_EXIT_CODE" echo "Bitte prüfen Sie die Build-Ausgabe oben auf Fehler." + echo "Build-Log: $BUILD_LOG_FILE" exit 1 fi @@ -308,10 +347,11 @@ echo " Synchronizing public documents into build output..." sync_public_documents_to_build # Prüfe auf Warnungen im Build-Output, die auf Probleme hinweisen -if echo "$BUILD_OUTPUT" | grep -qi "error\|failed\|missing"; then +if rg -i "error|failed|missing" "$BUILD_LOG_FILE" >/dev/null 2>&1; then echo "" echo "WARNING: Build-Output enthält möglicherweise Fehler oder Warnungen." echo "Bitte prüfen Sie die Ausgabe oben." + echo "Build-Log: $BUILD_LOG_FILE" fi # Prüfe, ob der Build erfolgreich war - mehrere Checks diff --git a/nuxt.config.js b/nuxt.config.js index 9f3755b..80710ff 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -1,12 +1,19 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ - devtools: { enabled: true }, + devtools: { enabled: process.env.NODE_ENV !== 'production' }, modules: ['@nuxtjs/tailwindcss', '@pinia/nuxt'], nitro: { preset: 'node-server', - dev: process.env.NODE_ENV !== 'production' + dev: process.env.NODE_ENV !== 'production', + sourceMap: false + }, + + vite: { + build: { + reportCompressedSize: false + } }, // Erzwinge Dev-Port und Host zuverlässig für `npm run dev` From fddde56076af1b76a64b1e7239934f6fdf4abc97 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 6 May 2026 16:03:16 +0200 Subject: [PATCH 2/2] Update package version to 1.1.6 and enhance deploy script with dependency checks - Bumped the package version to 1.1.6 in package.json. - Added `install_dependencies_if_needed` function in deploy-test.sh to conditionally install dependencies based on the state of package-lock.json. - Improved logging of build output to a file for better error tracking during deployment. - Updated Nuxt cache handling to retain .nuxt directory for faster builds unless explicitly cleaned. --- deploy-test.sh | 66 ++++++++++++++++++++++++++++++++++++++++---------- package.json | 2 +- 2 files changed, 54 insertions(+), 14 deletions(-) diff --git a/deploy-test.sh b/deploy-test.sh index cd3be43..adb55ad 100755 --- a/deploy-test.sh +++ b/deploy-test.sh @@ -77,6 +77,37 @@ install_dependencies() { fi } +install_dependencies_if_needed() { + local cache_dir=".deploy-cache" + local lock_hash_file="$cache_dir/package-lock.sha256" + local current_lock_hash="" + local previous_lock_hash="" + + if [ ! -f "package-lock.json" ]; then + echo " package-lock.json fehlt, führe npm install aus..." + install_dependencies + return 0 + fi + + mkdir -p "$cache_dir" + current_lock_hash="$(sha256sum package-lock.json | awk '{print $1}')" + if [ -f "$lock_hash_file" ]; then + previous_lock_hash="$(cat "$lock_hash_file" 2>/dev/null || true)" + fi + + if [ ! -d "node_modules" ]; then + echo " node_modules fehlt, installiere Dependencies..." + install_dependencies + elif [ "$current_lock_hash" != "$previous_lock_hash" ]; then + echo " package-lock.json geändert, führe npm ci aus..." + install_dependencies + else + echo " package-lock.json unverändert, überspringe npm ci" + fi + + printf '%s\n' "$current_lock_hash" > "$lock_hash_file" +} + use_project_node() { export NVM_DIR="${NVM_DIR:-$HOME/.nvm}" if [ -s "$NVM_DIR/nvm.sh" ]; then @@ -245,7 +276,7 @@ echo "" echo "3. Installing dependencies..." use_project_node ensure_node_version -install_dependencies +install_dependencies_if_needed # 4. Remove old build (but keep data!) echo "" @@ -268,11 +299,16 @@ if [ -d ".output" ]; then echo " ✓ .output gelöscht" fi -# Auch .nuxt Cache löschen für sauberen Build -if [ -d ".nuxt" ]; then - echo " Removing .nuxt cache..." - rm -rf .nuxt - echo " ✓ .nuxt gelöscht" +# .nuxt standardmäßig behalten (beschleunigt Folge-Builds deutlich). +# Für erzwungenen Clean-Build: CLEAN_NUXT_CACHE=1 ./deploy-test.sh +if [ "${CLEAN_NUXT_CACHE:-0}" = "1" ]; then + if [ -d ".nuxt" ]; then + echo " CLEAN_NUXT_CACHE=1 gesetzt: entferne .nuxt cache..." + rm -rf .nuxt + echo " ✓ .nuxt gelöscht" + fi +else + echo " Behalte .nuxt cache für schnelleren Build (CLEAN_NUXT_CACHE=1 für Clean-Build)" fi # Prüfe, ob node_modules vorhanden ist (für npm run build) @@ -295,17 +331,20 @@ if [ ! -f "node_modules/.package-lock.json" ] && [ ! -f "package-lock.json" ]; t install_dependencies fi -# Build mit expliziter Fehlerbehandlung und Output-Capture -BUILD_OUTPUT=$(npm run build 2>&1) -BUILD_EXIT_CODE=$? - -# Zeige Build-Output -echo "$BUILD_OUTPUT" +# Build mit expliziter Fehlerbehandlung und gleichzeitiger Log-Datei +BUILD_LOG_FILE=".deploy-cache/build-$(date +%Y%m%d-%H%M%S).log" +mkdir -p ".deploy-cache" +if npm run build 2>&1 | tee "$BUILD_LOG_FILE"; then + BUILD_EXIT_CODE=0 +else + BUILD_EXIT_CODE=$? +fi if [ "$BUILD_EXIT_CODE" -ne 0 ]; then echo "" echo "ERROR: Build fehlgeschlagen mit Exit-Code $BUILD_EXIT_CODE" echo "Bitte prüfen Sie die Build-Ausgabe oben auf Fehler." + echo "Build-Log: $BUILD_LOG_FILE" exit 1 fi @@ -314,10 +353,11 @@ echo " Synchronizing public documents into build output..." sync_public_documents_to_build # Prüfe auf Warnungen im Build-Output, die auf Probleme hinweisen -if echo "$BUILD_OUTPUT" | grep -qi "error\|failed\|missing"; then +if rg -i "error|failed|missing" "$BUILD_LOG_FILE" >/dev/null 2>&1; then echo "" echo "WARNING: Build-Output enthält möglicherweise Fehler oder Warnungen." echo "Bitte prüfen Sie die Ausgabe oben." + echo "Build-Log: $BUILD_LOG_FILE" fi # Prüfe, ob der Build erfolgreich war - mehrere Checks diff --git a/package.json b/package.json index 921f6b1..2bd303e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "harheimertc-website", - "version": "1.1.5", + "version": "1.1.6", "description": "Moderne Webseite für den Harheimer Tischtennis Club", "private": true, "type": "module",