xiaoluolyg--god
76 行
2.4 KiB
PowerShell
76 行
2.4 KiB
PowerShell
# JiuwenClaw 打包脚本
|
|
# 1. 编译前端 (jiuwenclaw/channels/web/frontend)
|
|
# 2. 构建 wheel 包(包含前端 dist)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$ProjectRoot = Split-Path $PSScriptRoot -Parent
|
|
|
|
Write-Host "[build] 项目根目录: $ProjectRoot" -ForegroundColor Cyan
|
|
|
|
# 1. 编译前端
|
|
$WebDir = Join-Path (Join-Path $ProjectRoot "jiuwenclaw\channels\web\frontend") ""
|
|
if (-not (Test-Path $WebDir)) {
|
|
Write-Error "前端目录不存在: $WebDir"
|
|
}
|
|
|
|
Write-Host "[build] 正在编译前端..." -ForegroundColor Yellow
|
|
Push-Location $WebDir
|
|
try {
|
|
if (-not (Test-Path "node_modules")) {
|
|
Write-Host "[build] 安装 npm 依赖..." -ForegroundColor Gray
|
|
npm install
|
|
}
|
|
npm run build
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "前端编译失败"
|
|
}
|
|
} finally {
|
|
Pop-Location
|
|
}
|
|
|
|
$DistDir = Join-Path $WebDir "dist"
|
|
if (-not (Test-Path $DistDir)) {
|
|
Write-Error "前端编译输出不存在: $DistDir"
|
|
}
|
|
Write-Host "[build] 前端编译完成: $DistDir" -ForegroundColor Green
|
|
|
|
# 临时移走 node_modules,避免被打包进 wheel
|
|
$NodeModules = Join-Path $WebDir "node_modules"
|
|
$NodeModulesBak = Join-Path $WebDir "node_modules.bak"
|
|
$NodeModulesMoved = $false
|
|
if (Test-Path $NodeModules) {
|
|
Write-Host "[build] 临时移走 node_modules 以减小 wheel 体积..." -ForegroundColor Gray
|
|
Move-Item $NodeModules $NodeModulesBak -Force
|
|
$NodeModulesMoved = $true
|
|
}
|
|
|
|
try {
|
|
# 2. 构建 wheel
|
|
Write-Host "[build] 正在构建 wheel 包..." -ForegroundColor Yellow
|
|
Push-Location $ProjectRoot
|
|
try {
|
|
python -m pip install --upgrade build wheel 2>$null
|
|
python -m build --wheel --no-isolation
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "wheel 构建失败"
|
|
}
|
|
} finally {
|
|
Pop-Location
|
|
}
|
|
|
|
# 确保 dist 目录存在
|
|
$DistOutput = Join-Path $ProjectRoot "dist"
|
|
if (-not (Test-Path $DistOutput)) {
|
|
New-Item -ItemType Directory -Path $DistOutput -Force | Out-Null
|
|
Write-Host "[build] 创建 dist 目录: $DistOutput" -ForegroundColor Gray
|
|
}
|
|
Write-Host "[build] 完成! wheel 包位于: $DistOutput" -ForegroundColor Green
|
|
Get-ChildItem $DistOutput -Filter "*.whl" | ForEach-Object { Write-Host " - $($_.Name)" }
|
|
} finally {
|
|
# 恢复 node_modules
|
|
if ($NodeModulesMoved -and (Test-Path $NodeModulesBak)) {
|
|
Move-Item $NodeModulesBak $NodeModules -Force
|
|
Write-Host "[build] 已恢复 node_modules" -ForegroundColor Gray
|
|
}
|
|
}
|