首次提交by MimoCode
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
# 药箱启动脚本 (PowerShell)
|
||||
# 用法: .\start.ps1 [命令]
|
||||
|
||||
param(
|
||||
[string]$Command = "help"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# 颜色函数
|
||||
function Write-Color {
|
||||
param([string]$Text, [string]$Color = "White")
|
||||
Write-Host $Text -ForegroundColor $Color
|
||||
}
|
||||
|
||||
function Write-Success { param([string]$Text) Write-Color $Text "Green" }
|
||||
function Write-Error { param([string]$Text) Write-Color $Text "Red" }
|
||||
function Write-Info { param([string]$Text) Write-Color $Text "Cyan" }
|
||||
function Write-Warning { param([string]$Text) Write-Color $Text "Yellow" }
|
||||
|
||||
# 检查 Node.js
|
||||
function Test-Node {
|
||||
try {
|
||||
$version = node --version
|
||||
Write-Success "Node.js $version 已安装"
|
||||
return $true
|
||||
} catch {
|
||||
Write-Error "未安装 Node.js,请先安装"
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
# 检查 Python
|
||||
function Test-Python {
|
||||
try {
|
||||
$version = python --version
|
||||
Write-Success "Python $version 已安装"
|
||||
return $true
|
||||
} catch {
|
||||
Write-Error "未安装 Python,请先安装"
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
# 安装前端依赖
|
||||
function Install-Frontend {
|
||||
Write-Info "安装前端依赖..."
|
||||
Set-Location frontend
|
||||
npm install
|
||||
Set-Location ..
|
||||
Write-Success "前端依赖安装完成"
|
||||
}
|
||||
|
||||
# 安装后端依赖
|
||||
function Install-Backend {
|
||||
Write-Info "安装后端依赖..."
|
||||
Set-Location backend
|
||||
|
||||
if (-not (Test-Path "venv")) {
|
||||
Write-Info "创建虚拟环境..."
|
||||
python -m venv venv
|
||||
}
|
||||
|
||||
& ".\venv\Scripts\Activate.ps1"
|
||||
pip install -r requirements.txt
|
||||
Set-Location ..
|
||||
Write-Success "后端依赖安装完成"
|
||||
}
|
||||
|
||||
# 安装所有依赖
|
||||
function Install-All {
|
||||
Install-Frontend
|
||||
Install-Backend
|
||||
}
|
||||
|
||||
# 启动前端
|
||||
function Start-Frontend {
|
||||
Write-Info "启动前端开发服务器..."
|
||||
Set-Location frontend
|
||||
Start-Process npm -ArgumentList "run dev" -NoNewWindow
|
||||
Set-Location ..
|
||||
Write-Success "前端服务器启动中: http://localhost:5173"
|
||||
}
|
||||
|
||||
# 启动后端
|
||||
function Start-Backend {
|
||||
Write-Info "启动后端开发服务器..."
|
||||
Set-Location backend
|
||||
|
||||
if (-not (Test-Path "venv")) {
|
||||
Install-Backend
|
||||
}
|
||||
|
||||
& ".\venv\Scripts\Activate.ps1"
|
||||
Start-Process uvicorn -ArgumentList "app.main:app --reload --host 0.0.0.0 --port 8000" -NoNewWindow
|
||||
Set-Location ..
|
||||
Write-Success "后端服务器启动中: http://localhost:8000"
|
||||
}
|
||||
|
||||
# 启动所有服务
|
||||
function Start-All {
|
||||
Start-Backend
|
||||
Start-Sleep -Seconds 2
|
||||
Start-Frontend
|
||||
Write-Success "所有服务已启动"
|
||||
Write-Info "前端: http://localhost:5173"
|
||||
Write-Info "后端: http://localhost:8000"
|
||||
Write-Info "API 文档: http://localhost:8000/docs"
|
||||
}
|
||||
|
||||
# 构建前端
|
||||
function Build-Frontend {
|
||||
Write-Info "构建前端生产版本..."
|
||||
Set-Location frontend
|
||||
npm run build
|
||||
Set-Location ..
|
||||
Write-Success "构建完成,输出目录: frontend/dist"
|
||||
}
|
||||
|
||||
# 清理缓存
|
||||
function Clear-Cache {
|
||||
Write-Info "清理缓存..."
|
||||
|
||||
if (Test-Path "frontend/node_modules/.cache") {
|
||||
Remove-Item -Recurse -Force "frontend/node_modules/.cache"
|
||||
}
|
||||
|
||||
Write-Success "缓存清理完成"
|
||||
}
|
||||
|
||||
# 显示帮助
|
||||
function Show-Help {
|
||||
Write-Color "药箱启动脚本" "Cyan"
|
||||
Write-Color "========================" "Cyan"
|
||||
Write-Host ""
|
||||
Write-Info "可用命令:"
|
||||
Write-Host " install - 安装所有依赖"
|
||||
Write-Host " install:f - 安装前端依赖"
|
||||
Write-Host " install:b - 安装后端依赖"
|
||||
Write-Host " start - 启动所有服务"
|
||||
Write-Host " start:f - 启动前端服务"
|
||||
Write-Host " start:b - 启动后端服务"
|
||||
Write-Host " build - 构建前端生产版本"
|
||||
Write-Host " clean - 清理缓存"
|
||||
Write-Host " help - 显示帮助"
|
||||
Write-Host ""
|
||||
Write-Info "示例:"
|
||||
Write-Host " .\start.ps1 install # 安装所有依赖"
|
||||
Write-Host " .\start.ps1 start # 启动所有服务"
|
||||
Write-Host " .\start.ps1 build # 构建生产版本"
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
switch ($Command.ToLower()) {
|
||||
"install" { Install-All }
|
||||
"install:f" { Install-Frontend }
|
||||
"install:frontend" { Install-Frontend }
|
||||
"install:b" { Install-Backend }
|
||||
"install:backend" { Install-Backend }
|
||||
"start" { Start-All }
|
||||
"start:f" { Start-Frontend }
|
||||
"start:frontend" { Start-Frontend }
|
||||
"start:b" { Start-Backend }
|
||||
"start:backend" { Start-Backend }
|
||||
"build" { Build-Frontend }
|
||||
"build:f" { Build-Frontend }
|
||||
"build:frontend" { Build-Frontend }
|
||||
"clean" { Clear-Cache }
|
||||
"help" { Show-Help }
|
||||
"?" { Show-Help }
|
||||
default {
|
||||
Write-Error "未知命令: $Command"
|
||||
Show-Help
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user