Param(
[switch]$Watch
)
function Write-ColorOutput {
param(
[string]$Message,
[string]$Color = "White"
)
Write-Host $Message -ForegroundColor $Color
}
try {
Write-ColorOutput "๐ Starting Development Server..." -Color Green
# Load environment variables from .env if available
if (Test-Path ".env") {
Get-Content .env | ForEach-Object {
if ($_ -match "^(?<key>[^#=]+)=(?<value>.+)$") {
$key = $matches['key'].Trim()
$value = $matches['value'].Trim()
[System.Environment]::SetEnvironmentVariable($key, $value, 'Process')
}
}
Write-ColorOutput "โ Environment variables loaded from .env" -Color Cyan
}
# Install dependencies if node_modules missing
if (-not (Test-Path "node_modules")) {
Write-ColorOutput "๐ฆ Installing dependencies (npm install)..." -Color Yellow
npm install
if ($LASTEXITCODE -ne 0) {
throw "npm install failed"
}
}
# Start dev server with hot reload
if ($Watch) {
Write-ColorOutput "๐ Starting server in watch mode (nodemon)..." -Color Yellow
npx nodemon server.js
}
else {
Write-ColorOutput "โถ Starting server (node server.js)..." -Color Yellow
node server.js
}
}
catch {
Write-ColorOutput "โ Error: $_" -Color Red
exit 1
}
finally {
Write-ColorOutput " Development server stopped" -Color DarkYellow
}