# BugPack 一键启动脚本 # 功能:自动配置环境并启动 BugPack 服务 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Host.UI.RawUI.WindowTitle = "BugPack 一键启动脚本" # 项目目录 $BUGPACK_DIR = Split-Path -Parent $MyInvocation.MyCommand.Definition $PORT = 3457 # 自动检测 MSYS2 安装路径 $MSYS2_PATHS = @("C:\msys64", "D:\msys64", "E:\msys64") $MSYS2_PATH = $null foreach ($path in $MSYS2_PATHS) { if (Test-Path "$path\usr\bin\bash.exe") { $MSYS2_PATH = $path break } } if (-not $MSYS2_PATH) { Write-Host "[错误] 未找到 MSYS2 环境!" -ForegroundColor Red Write-Host "" Write-Host "请确认 MSYS2 已安装,或手动修改脚本中的 MSYS2_PATHS 变量。" Write-Host "常见安装路径:C:\msys64, D:\msys64" Write-Host "" Read-Host "按回车键退出" exit 1 } Write-Host "[信息] MSYS2 环境已找到: $MSYS2_PATH" -ForegroundColor Green # 检查 node_modules 是否存在 if (-not (Test-Path "$BUGPACK_DIR\node_modules")) { Write-Host "[警告] 未找到 node_modules,需要安装依赖..." -ForegroundColor Yellow Write-Host "[信息] 正在安装依赖,请稍候(可能需要几分钟)..." Write-Host "" $env:MSYSTEM = "MINGW64" $env:PATH = "$MSYS2_PATH\mingw64\bin;$MSYS2_PATH\usr\bin;$env:PATH" Set-Location $BUGPACK_DIR & "$MSYS2_PATH\usr\bin\bash.exe" -lc "export PATH='/mingw64/bin:$PATH' && export LD_LIBRARY_PATH='/mingw64/bin:$LD_LIBRARY_PATH' && npm install" if ($LASTEXITCODE -ne 0) { Write-Host "" Write-Host "[错误] 依赖安装失败!" -ForegroundColor Red Write-Host "[提示] 请检查网络连接,或手动运行:npm install" Read-Host "按回车键退出" exit 1 } Write-Host "[信息] 依赖安装完成" -ForegroundColor Green } else { Write-Host "[信息] node_modules 已存在,跳过安装" -ForegroundColor Green } # 检查 dist 目录是否存在(构建产物) if (-not (Test-Path "$BUGPACK_DIR\dist\client\index.html")) { Write-Host "[警告] 未找到构建产物,需要构建项目..." -ForegroundColor Yellow Write-Host "[信息] 正在构建项目,请稍候..." Write-Host "" $env:MSYSTEM = "MINGW64" $env:PATH = "$MSYS2_PATH\mingw64\bin;$MSYS2_PATH\usr\bin;$env:PATH" Set-Location $BUGPACK_DIR & "$MSYS2_PATH\usr\bin\bash.exe" -lc "export PATH='/mingw64/bin:$PATH' && export LD_LIBRARY_PATH='/mingw64/bin:$LD_LIBRARY_PATH' && npm run build" if ($LASTEXITCODE -ne 0) { Write-Host "" Write-Host "[错误] 项目构建失败!" -ForegroundColor Red Write-Host "[提示] 请检查 src/server/index.ts 中的静态文件路径配置" Read-Host "按回车键退出" exit 1 } Write-Host "[信息] 项目构建完成" -ForegroundColor Green } else { Write-Host "[信息] 构建产物已存在,跳过构建" -ForegroundColor Green } # 检查端口是否被占用,如果被占用则端口号+1,直到找到可用端口 $ORIGINAL_PORT = $PORT Write-Host "[信息] 检查端口 $PORT 是否可用..." while ($true) { $connection = Get-NetTCPConnection -LocalPort $PORT -ErrorAction SilentlyContinue if (-not $connection) { break } Write-Host "[警告] 端口 $PORT 已被占用,尝试端口 $($PORT+1)..." -ForegroundColor Yellow $PORT++ } Write-Host "[信息] 端口 $PORT 可用!" -ForegroundColor Green # 启动服务 Write-Host "" Write-Host "============================================" Write-Host " BugPack 服务启动中..." Write-Host "============================================" Write-Host "" if ($ORIGINAL_PORT -ne $PORT) { Write-Host "[提示] 默认端口 $ORIGINAL_PORT 被占用,已自动切换到端口 $PORT" -ForegroundColor Cyan Write-Host "" } Write-Host "[信息] 项目目录: $BUGPACK_DIR" Write-Host "[信息] 访问地址: http://localhost:$PORT" -ForegroundColor Green Write-Host "" Write-Host "[提示] 按 Ctrl+C 可停止服务" Write-Host "" # 使用 MSYS2 bash 启动服务 $env:MSYSTEM = "MINGW64" $env:PATH = "$MSYS2_PATH\mingw64\bin;$MSYS2_PATH\usr\bin;$env:PATH" Set-Location $BUGPACK_DIR & "$MSYS2_PATH\usr\bin\bash.exe" -lc "export PATH='/mingw64/bin:$PATH' && export LD_LIBRARY_PATH='/mingw64/bin:$LD_LIBRARY_PATH' && PORT=$PORT npm run dev:server" # 服务停止后的提示 Write-Host "" Write-Host "============================================" Write-Host "[信息] BugPack 服务已停止" Write-Host "============================================" Write-Host "" Read-Host "按回车键退出"