Files
wecom_it_smart_desk/scripts/dev-frontend-install.ps1
T
Simon eee2bcc071 feat(dev): 本地开发工具集 v0.5.6-dev-tooling
包含本地 dev 链路完整跑通的工具集(不进生产):

backend:
- dev_auth.py: /api/dev/login Mock 企微 OAuth(/dev/* 路由)
- messages.py: dev 模式短路企微推送,避免 invalid corpid 噪音
- main.py: dev 模式启动时建 5 条 demo conversation,让前端有数据可测

frontend:
- PortalSelect.vue: dev 模式 enterRole 跳完整 URL(5173/5174/5175 端口),生产仍走相对路径

infrastructure:
- docker-compose.dev.yml: dev compose(包含 backend/postgres/redis)

scripts(Windows PowerShell):
- dev-frontend-install.ps1: 一次性装 4 个前端依赖
- dev-frontend-start.ps1: 后台起 4 个前端 dev server
- dev-check-schema-drift.ps1: 对比 SQLAlchemy 模型 vs Postgres schema,漂移 exit 1

docs:
- CURRENT-FOCUS.md: 项目状态看板(每次 session 维护)
2026-06-16 19:24:02 +08:00

106 lines
4.8 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# 企微IT智能服务台 — 前端 dev 环境一键安装脚本
# =============================================================================
# 作用:一次性给 4 个前端项目装 pnpm 依赖
# 用法:.\scripts\dev-frontend-install.ps1
# 前置:已装 pnpm (npm install -g pnpm)
# 输出:每个前端在它自己的目录下创建 node_modules
# 注意:首次安装 3-8 分钟,后续 pnpm install 会很快(增量)
# =============================================================================
$ErrorActionPreference = 'Stop'
$ProjectRoot = $PSScriptRoot | Split-Path -Parent
Set-Location $ProjectRoot
# --------------------------------------------------------------------------
# 自动把 npm 全局 bin 加进 PATH(只对本脚本生效,不污染系统)
# 原因:某些用户(如 NVM 用户)系统 PATH 缺 npm global bin,pnpm 找不到
# --------------------------------------------------------------------------
$NpmGlobalBin = npm config get prefix 2>$null
if ($NpmGlobalBin -and (Test-Path $NpmGlobalBin)) {
if ($env:PATH -notlike "*$NpmGlobalBin*") {
$env:PATH = "$env:PATH;$NpmGlobalBin"
Write-Host " 已临时把 $NpmGlobalBin 加进 PATH(只对本次脚本生效)" -ForegroundColor DarkGray
}
}
$Frontends = @('frontend-h5', 'frontend-agent', 'frontend-admin', 'frontend-portal')
# --------------------------------------------------------------------------
# 颜色函数
# --------------------------------------------------------------------------
function Write-Step($msg) { Write-Host "`n$msg" -ForegroundColor Cyan }
function Write-OK($msg) { Write-Host "$msg" -ForegroundColor Green }
function Write-Warn($msg) { Write-Host "$msg" -ForegroundColor Yellow }
function Write-Err($msg) { Write-Host "$msg" -ForegroundColor Red }
# --------------------------------------------------------------------------
# 前置检查
# --------------------------------------------------------------------------
Write-Step "═══ 企微IT智能服务台 — 前端依赖安装 ═══"
# 检查 pnpm(包含 npm global bin 路径)
$pnpmCmd = Get-Command pnpm -ErrorAction SilentlyContinue
if (-not $pnpmCmd) {
Write-Err "pnpm 没装,请先跑: npm install -g pnpm"
exit 1
}
$pnpmVer = & $pnpmCmd.Source --version 2>&1
Write-OK "pnpm 已装: $pnpmVer"
# 检查 Node 版本(警告,不阻塞)
$nodeVer = node --version
Write-Host " Node 版本: $nodeVer"
if ($nodeVer -notmatch '^v(20\.|21\.|22\.)') {
Write-Warn "前端要求 Node 20.x,你是 $nodeVer。多数情况能跑,出问题再装 Node 20。"
}
# 检查后端 dev 是否在跑(可选)
try {
$null = Invoke-WebRequest -Uri 'http://localhost:8000/health' -UseBasicParsing -TimeoutSec 3
Write-OK "后端 dev 在跑 (http://localhost:8000)"
} catch {
Write-Warn "后端 dev 没跑,Vite 反代会连不上后端。先跑 dev-start.ps1 起后端。"
}
# --------------------------------------------------------------------------
# 顺序装 4 个前端
# --------------------------------------------------------------------------
foreach ($name in $Frontends) {
Write-Step "─── $name ───"
$dir = Join-Path $ProjectRoot $name
if (-not (Test-Path "$dir/package.json")) {
Write-Err "找不到 $dir/package.json,跳过"
continue
}
Set-Location $dir
$sw = [System.Diagnostics.Stopwatch]::StartNew()
try {
pnpm install 2>&1 | Tee-Object -FilePath "$ProjectRoot\.pnpm-install-$name.log" | Out-Host
$sw.Stop()
Write-OK "$name 装完 ($([math]::Round($sw.Elapsed.TotalSeconds))s)"
} catch {
$sw.Stop()
Write-Err "$name 装失败 ($([math]::Round($sw.Elapsed.TotalSeconds))s)"
Write-Host " 详细日志: $ProjectRoot\.pnpm-install-$name.log" -ForegroundColor Yellow
Write-Host " 常见原因:网络抖动 / 镜像源不通 / Node 版本太新" -ForegroundColor Yellow
}
}
# --------------------------------------------------------------------------
# 汇总
# --------------------------------------------------------------------------
Write-Step "═══ 装完 ═══"
foreach ($name in $Frontends) {
$log = "$ProjectRoot\.pnpm-install-$name.log"
if ((Test-Path "$ProjectRoot/$name/node_modules") -and (Test-Path "$ProjectRoot/$name/package.json")) {
Write-OK "$name 已就绪 (node_modules 存在)"
} else {
Write-Err "$name 没装好,日志: $log"
}
}
Write-Host "`n下一步:启动前端 dev server" -ForegroundColor Cyan
Write-Host " 单独启动: cd frontend-h5 ; pnpm dev" -ForegroundColor Gray
Write-Host " 一起启动: d:/资料/03-项目开发/wecom_it_smart_desk-claude/scripts/dev-frontend-start.ps1" -ForegroundColor Gray
Write-Host " 全部停止: ...\scripts\dev-frontend-start.ps1 -Stop" -ForegroundColor Gray