Enhance deploy-production.sh with new functions for Node.js version management and public document synchronization. Added checks for Node.js version requirements and improved error handling for document syncing. Updated package.json and package-lock.json to specify Node.js and npm engine requirements.
This commit is contained in:
@@ -64,6 +64,67 @@ install_dependencies() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
use_project_node() {
|
||||||
|
export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
|
||||||
|
if [ -s "$NVM_DIR/nvm.sh" ]; then
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
. "$NVM_DIR/nvm.sh"
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
echo " Using Node version from .nvmrc..."
|
||||||
|
nvm use
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_node_version() {
|
||||||
|
if ! command -v node >/dev/null 2>&1; then
|
||||||
|
echo "ERROR: Node.js ist nicht im PATH."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local node_version
|
||||||
|
node_version="$(node -p 'process.versions.node')"
|
||||||
|
if ! node -e 'const [major, minor] = process.versions.node.split(".").map(Number); process.exit(major > 22 || (major === 22 && minor >= 12) ? 0 : 1)' >/dev/null 2>&1; then
|
||||||
|
echo "ERROR: Node.js >= 22.12.0 wird benötigt, aktuell ist $node_version aktiv."
|
||||||
|
echo "Bitte Node 22 installieren/aktivieren, z.B.:"
|
||||||
|
echo " nvm install 22"
|
||||||
|
echo " nvm alias default 22"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " Node.js $node_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_public_documents_to_build() {
|
||||||
|
if [ ! -d "public/documents" ]; then
|
||||||
|
echo " No public/documents directory to sync"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d ".output/public" ]; then
|
||||||
|
echo "ERROR: .output/public fehlt, kann public/documents nicht synchronisieren."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p ".output/public/documents"
|
||||||
|
cp -a "public/documents/." ".output/public/documents/"
|
||||||
|
echo " ✓ public/documents -> .output/public/documents synchronisiert"
|
||||||
|
|
||||||
|
local template_pdf="beitrittserklärung_template.pdf"
|
||||||
|
if [ -f "public/documents/$template_pdf" ]; then
|
||||||
|
local source_size output_size
|
||||||
|
source_size=$(stat -f%z "public/documents/$template_pdf" 2>/dev/null || stat -c%s "public/documents/$template_pdf" 2>/dev/null || echo "0")
|
||||||
|
output_size=$(stat -f%z ".output/public/documents/$template_pdf" 2>/dev/null || stat -c%s ".output/public/documents/$template_pdf" 2>/dev/null || echo "0")
|
||||||
|
|
||||||
|
if [ "$source_size" != "$output_size" ] || [ "$source_size" = "0" ]; then
|
||||||
|
echo "ERROR: .output/public/documents/$template_pdf stimmt nicht mit public/documents überein (Source: $source_size, Output: $output_size)."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " ✓ $template_pdf im Build verifiziert ($output_size bytes)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
echo "0. Ensuring persistent data directories (recommended)..."
|
echo "0. Ensuring persistent data directories (recommended)..."
|
||||||
# IMPORTANT: Only symlink server/data if it's not tracked by git.
|
# IMPORTANT: Only symlink server/data if it's not tracked by git.
|
||||||
if has_tracked_files_under "server/data"; then
|
if has_tracked_files_under "server/data"; then
|
||||||
@@ -174,6 +235,8 @@ fi
|
|||||||
# 3. Install dependencies
|
# 3. Install dependencies
|
||||||
echo ""
|
echo ""
|
||||||
echo "3. Installing dependencies..."
|
echo "3. Installing dependencies..."
|
||||||
|
use_project_node
|
||||||
|
ensure_node_version
|
||||||
install_dependencies
|
install_dependencies
|
||||||
|
|
||||||
# 4. Remove old build (but keep data!)
|
# 4. Remove old build (but keep data!)
|
||||||
@@ -238,6 +301,10 @@ if [ "$BUILD_EXIT_CODE" -ne 0 ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo " Synchronizing public documents into build output..."
|
||||||
|
sync_public_documents_to_build
|
||||||
|
|
||||||
# Prüfe auf Warnungen im Build-Output, die auf Probleme hinweisen
|
# Prüfe auf Warnungen im Build-Output, die auf Probleme hinweisen
|
||||||
if echo "$BUILD_OUTPUT" | grep -qi "error\|failed\|missing"; then
|
if echo "$BUILD_OUTPUT" | grep -qi "error\|failed\|missing"; then
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
8
package-lock.json
generated
8
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "harheimertc-website",
|
"name": "harheimertc-website",
|
||||||
"version": "1.0.0",
|
"version": "1.1.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "harheimertc-website",
|
"name": "harheimertc-website",
|
||||||
"version": "1.0.0",
|
"version": "1.1.0",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pinia/nuxt": "^0.11.2",
|
"@pinia/nuxt": "^0.11.2",
|
||||||
@@ -41,6 +41,10 @@
|
|||||||
"tailwindcss": "^3.4.0",
|
"tailwindcss": "^3.4.0",
|
||||||
"vitest": "^4.0.16",
|
"vitest": "^4.0.16",
|
||||||
"vue-eslint-parser": "^10.2.0"
|
"vue-eslint-parser": "^10.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=22.12.0",
|
||||||
|
"npm": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@alloc/quick-lru": {
|
"node_modules/@alloc/quick-lru": {
|
||||||
|
|||||||
@@ -4,6 +4,10 @@
|
|||||||
"description": "Moderne Webseite für den Harheimer Tischtennis Club",
|
"description": "Moderne Webseite für den Harheimer Tischtennis Club",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=22.12.0",
|
||||||
|
"npm": ">=10"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nuxt dev --port 3100",
|
"dev": "nuxt dev --port 3100",
|
||||||
"build": "nuxt build",
|
"build": "nuxt build",
|
||||||
|
|||||||
Reference in New Issue
Block a user