# # LibreBooking n8n Node - Installations-Skript für Windows (PowerShell) # # Verwendung: # .\install.ps1 # # Optionen: # -NoLink Überspringt npm link (nur Build) # -Global Installiert global statt npm link # -Help Zeigt diese Hilfe an # param( [switch]$NoLink, [switch]$Global, [switch]$Help ) # Konfiguration $MIN_NODE_VERSION = 18 $ErrorActionPreference = "Stop" # Funktionen function Write-ColorOutput { param( [string]$Message, [string]$Color = "White" ) Write-Host $Message -ForegroundColor $Color } function Write-Header { Write-ColorOutput "" "Blue" Write-ColorOutput "=============================================" "Blue" Write-ColorOutput " LibreBooking n8n Node Installer" "Blue" Write-ColorOutput "=============================================" "Blue" Write-ColorOutput "" "Blue" } function Write-Success { param([string]$Message) Write-ColorOutput "✓ $Message" "Green" } function Write-Warning-Msg { param([string]$Message) Write-ColorOutput "⚠ $Message" "Yellow" } function Write-Error-Msg { param([string]$Message) Write-ColorOutput "✗ $Message" "Red" } function Write-Info { param([string]$Message) Write-ColorOutput "ℹ $Message" "Cyan" } function Show-Help { Write-Host "Verwendung: .\install.ps1 [OPTIONEN]" Write-Host "" Write-Host "Optionen:" Write-Host " -NoLink Überspringt npm link (nur Build)" Write-Host " -Global Installiert global mit npm install -g" Write-Host " -Help Zeigt diese Hilfe an" Write-Host "" Write-Host "Beispiele:" Write-Host " .\install.ps1 # Standard-Installation mit npm link" Write-Host " .\install.ps1 -NoLink # Nur Dependencies installieren und Build" Write-Host " .\install.ps1 -Global # Globale Installation" exit 0 } function Test-Command { param([string]$Command) try { $null = Get-Command $Command -ErrorAction Stop return $true } catch { return $false } } function Get-NodeVersion { $version = (node -v) -replace 'v', '' return [int]($version.Split('.')[0]) } # Hilfe anzeigen if ($Help) { Show-Help } # Start Write-Header # 1. Node.js prüfen Write-Host "" Write-Info "Prüfe Voraussetzungen..." Write-Host "" if (-not (Test-Command "node")) { Write-Error-Msg "Node.js ist nicht installiert!" Write-Host " Bitte installiere Node.js v$MIN_NODE_VERSION oder höher:" Write-Host " https://nodejs.org/" exit 1 } $nodeVersion = Get-NodeVersion if ($nodeVersion -lt $MIN_NODE_VERSION) { Write-Error-Msg "Node.js Version $nodeVersion ist zu alt!" Write-Host " Mindestens Version $MIN_NODE_VERSION benötigt." exit 1 } $nodeFullVersion = (node -v) -replace 'v', '' Write-Success "Node.js v$nodeFullVersion gefunden" # 2. npm prüfen if (-not (Test-Command "npm")) { Write-Error-Msg "npm ist nicht installiert!" exit 1 } $npmVersion = npm -v Write-Success "npm v$npmVersion gefunden" # 3. n8n prüfen (optional) if (Test-Command "n8n") { try { $n8nVersion = n8n --version 2>$null Write-Success "n8n $n8nVersion gefunden" } catch { Write-Success "n8n installiert" } } else { Write-Warning-Msg "n8n ist nicht global installiert." Write-Host " Für npm link muss n8n global installiert sein:" Write-Host " npm install -g n8n" Write-Host "" if (-not $NoLink -and -not $Global) { $response = Read-Host "Möchtest du trotzdem fortfahren? (j/N)" if ($response -notmatch '^[Jj]$') { exit 1 } } } # 4. Dependencies installieren Write-Host "" Write-Info "Installiere Dependencies..." try { npm install Write-Success "Dependencies installiert" } catch { Write-Error-Msg "Fehler bei npm install: $_" exit 1 } # 5. TypeScript kompilieren Write-Host "" Write-Info "Kompiliere TypeScript..." try { npm run build Write-Success "Build erfolgreich" } catch { Write-Error-Msg "Fehler beim Build: $_" exit 1 } # 6. npm link oder global install if ($Global) { Write-Host "" Write-Info "Installiere global..." try { npm install -g . Write-Success "Global installiert" } catch { Write-Error-Msg "Fehler bei globaler Installation: $_" exit 1 } } elseif (-not $NoLink) { Write-Host "" Write-Info "Verlinke mit npm link..." try { npm link Write-Success "npm link erfolgreich" # Versuche mit n8n zu verlinken if (Test-Command "n8n") { $n8nPath = Join-Path (npm root -g) "n8n" if (Test-Path $n8nPath) { Write-Info "Verlinke mit n8n..." Push-Location $n8nPath try { npm link n8n-nodes-librebooking 2>$null Write-Success "Mit n8n verlinkt" } catch { Write-Warning-Msg "Konnte nicht automatisch mit n8n verlinken" } finally { Pop-Location } } } } catch { Write-Error-Msg "Fehler bei npm link: $_" exit 1 } } # Abschluss Write-Host "" Write-ColorOutput "=============================================" "Green" Write-ColorOutput " Installation erfolgreich abgeschlossen!" "Green" Write-ColorOutput "=============================================" "Green" Write-Host "" Write-Host "Nächste Schritte:" Write-Host "" if ($NoLink) { Write-Host " 1. Führe 'npm link' aus, um den Node zu verlinken" Write-Host " 2. Starte n8n neu: n8n start" } else { Write-Host " 1. Starte n8n neu: n8n start" Write-Host " (oder mit Docker: docker-compose restart)" } Write-Host "" Write-Host " 2. Öffne n8n im Browser: http://localhost:5678" Write-Host " 3. Der LibreBooking Node sollte verfügbar sein" Write-Host "" Write-Host "Bei Problemen siehe INSTALLATION.md oder README.md" Write-Host ""