Files
aiot-platform-ui/scripts/deploy/build-and-push.ps1
2025-12-23 14:13:20 +08:00

79 lines
2.9 KiB
PowerShell
Raw Permalink 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.

# Local build and push script
# Usage: .\scripts\deploy\build-and-push.ps1
$ErrorActionPreference = "Stop"
Write-Host "Starting local build and push process..." -ForegroundColor Cyan
if (-not (Test-Path "package.json")) {
Write-Host "Error: Please run this script from project root" -ForegroundColor Red
exit 1
}
Write-Host "Cleaning old build artifacts..." -ForegroundColor Yellow
$distPath = "apps\web-antd\dist"
if (Test-Path $distPath) {
Remove-Item -Recurse -Force $distPath
}
if (-not (Test-Path "node_modules")) {
Write-Host "Installing dependencies..." -ForegroundColor Yellow
pnpm install
}
Write-Host "Building project..." -ForegroundColor Yellow
# 确保使用生产环境模式构建,避免使用开发环境配置
$env:NODE_ENV = "production"
pnpm build:antd
if (-not (Test-Path $distPath)) {
Write-Host "Error: Build failed, dist directory not found" -ForegroundColor Red
exit 1
}
$distItems = Get-ChildItem $distPath -ErrorAction SilentlyContinue
if ($null -eq $distItems) {
Write-Host "Error: Build failed, dist directory is empty" -ForegroundColor Red
exit 1
}
if ($distItems.Count -eq 0) {
Write-Host "Error: Build failed, dist directory is empty" -ForegroundColor Red
exit 1
}
Write-Host "Build successful!" -ForegroundColor Green
$buildSize = (Get-ChildItem $distPath -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB
$buildSizeRounded = [math]::Round($buildSize, 2)
Write-Host "Build size: $buildSizeRounded MB" -ForegroundColor Cyan
$response = Read-Host "Do you want to commit and push to repository? (y/n)"
if ($response -eq "y" -or $response -eq "Y") {
# 只检查 dist 目录的变化,不检查其他文件
$distStatus = git status --porcelain apps/web-antd/dist
if ($distStatus) {
Write-Host "Staging build artifacts..." -ForegroundColor Yellow
# 只添加 dist 目录,不添加其他文件
git add -f apps/web-antd/dist
Write-Host "Committing changes..." -ForegroundColor Yellow
# 使用 --no-verify 跳过 pre-commit hooks避免检查大量构建产物文件
# 注意:不要使用 [skip ci],否则 CI/CD 不会触发
git commit --no-verify -m "chore: build and deploy web-antd" 2>&1 | Out-Null
Write-Host "Pushing to repository..." -ForegroundColor Yellow
git push origin master
Write-Host "Build artifacts pushed successfully!" -ForegroundColor Green
Write-Host "Waiting for CI/CD to deploy..." -ForegroundColor Cyan
} else {
Write-Host "No changes in dist directory to commit" -ForegroundColor Yellow
Write-Host "Note: Only dist directory changes will be committed, other files are ignored" -ForegroundColor Cyan
}
} else {
Write-Host "Skipping git push. You can manually commit and push later." -ForegroundColor Yellow
}
Write-Host "Done!" -ForegroundColor Green