8 changed files with 225 additions and 7 deletions
@ -0,0 +1,36 @@ |
|||||
|
@echo off |
||||
|
echo. |
||||
|
echo ====== ZDXT All-in-One Package ====== |
||||
|
echo. |
||||
|
|
||||
|
set "ENV=dev" |
||||
|
if not "%~1"=="" set "ENV=%~1" |
||||
|
|
||||
|
echo Env: %ENV% |
||||
|
echo. |
||||
|
|
||||
|
echo [1/2] Server Package ... |
||||
|
echo. |
||||
|
powershell -ExecutionPolicy Bypass -File "%~dp0ep-package.ps1" -BuildEnv %ENV% |
||||
|
if %ERRORLEVEL% neq 0 ( |
||||
|
echo. |
||||
|
echo Server Package Failed! |
||||
|
pause |
||||
|
exit /b 1 |
||||
|
) |
||||
|
|
||||
|
echo. |
||||
|
echo [2/2] Client Package ... |
||||
|
echo. |
||||
|
powershell -ExecutionPolicy Bypass -File "%~dp0client-package.ps1" -BuildEnv %ENV% |
||||
|
if %ERRORLEVEL% neq 0 ( |
||||
|
echo. |
||||
|
echo Client Package Failed! |
||||
|
pause |
||||
|
exit /b 1 |
||||
|
) |
||||
|
|
||||
|
echo. |
||||
|
echo ====== All Done! ====== |
||||
|
echo. |
||||
|
pause |
||||
@ -0,0 +1,15 @@ |
|||||
|
@echo off |
||||
|
echo. |
||||
|
echo ====== ZDXT Client Package ====== |
||||
|
echo. |
||||
|
|
||||
|
set "ENV=dev" |
||||
|
if not "%~1"=="" set "ENV=%~1" |
||||
|
|
||||
|
echo Env: %ENV% |
||||
|
echo. |
||||
|
|
||||
|
powershell -ExecutionPolicy Bypass -File "%~dp0client-package.ps1" -BuildEnv %ENV% |
||||
|
|
||||
|
echo. |
||||
|
pause |
||||
@ -0,0 +1,155 @@ |
|||||
|
# client-package.ps1 |
||||
|
# 一键打包前端项目:zdxt-admin-plus-ui + zdxt-enforcement-code-app |
||||
|
# 输出到 /dist/{timestamp}_{env}/ 目录 |
||||
|
# |
||||
|
# 用法: |
||||
|
# .\client-package.ps1 # 默认 dev 环境 |
||||
|
# .\client-package.ps1 -BuildEnv prod # prod 环境 |
||||
|
|
||||
|
param( |
||||
|
[ValidateSet("dev", "prod")] |
||||
|
[string]$BuildEnv = "dev" |
||||
|
) |
||||
|
|
||||
|
$ErrorActionPreference = "Stop" |
||||
|
$projectRoot = (Get-Item $PSScriptRoot).Parent.FullName |
||||
|
$timestamp = Get-Date -Format "yyyy-MM-dd_HH" |
||||
|
$folderName = "{0}_{1}" -f $timestamp, $BuildEnv |
||||
|
$deployDir = Join-Path $projectRoot "dist\$folderName" |
||||
|
|
||||
|
# --- 项目配置 --- |
||||
|
$uiProjectDir = Join-Path $projectRoot "zdxt-web-client\zdxt-admin-plus-ui" |
||||
|
$uiName = "zdxt-admin-plus-ui" |
||||
|
$uiOutputName = "zdxt-sup-web" |
||||
|
|
||||
|
$appProjectDir = Join-Path $projectRoot "zdxt-web-client\zdxt-enforcement-code-app" |
||||
|
$appEndpoints = @( |
||||
|
@{ mode = "enterprise"; output = "zdxt-ent-app" }, |
||||
|
@{ mode = "enforcement"; output = "zdxt-enf-app" } |
||||
|
) |
||||
|
|
||||
|
Write-Host "" |
||||
|
Write-Host "============================================" -ForegroundColor Cyan |
||||
|
Write-Host " ZDXT Client Package Script" -ForegroundColor Cyan |
||||
|
Write-Host (" Env: {0} | Timestamp: {1}" -f $BuildEnv, $timestamp) -ForegroundColor Cyan |
||||
|
Write-Host (" Output: dist\{0}" -f $folderName) -ForegroundColor Cyan |
||||
|
Write-Host "============================================" -ForegroundColor Cyan |
||||
|
Write-Host "" |
||||
|
|
||||
|
# ====================================================== |
||||
|
# Part 1: zdxt-admin-plus-ui |
||||
|
# ====================================================== |
||||
|
Write-Host ">>> [Part 1/2] zdxt-admin-plus-ui" -ForegroundColor Magenta |
||||
|
Write-Host "" |
||||
|
|
||||
|
# 1.1 npm install |
||||
|
Write-Host "[1/3] npm install ..." -ForegroundColor Yellow |
||||
|
Set-Location $uiProjectDir |
||||
|
|
||||
|
if (-not (Test-Path (Join-Path $uiProjectDir "node_modules"))) { |
||||
|
npm install |
||||
|
if ($LASTEXITCODE -ne 0) { |
||||
|
Write-Host "npm install Failed!" -ForegroundColor Red |
||||
|
exit 1 |
||||
|
} |
||||
|
Write-Host "[1/3] npm install Success" -ForegroundColor Green |
||||
|
} else { |
||||
|
Write-Host "[1/3] node_modules exists, skip install" -ForegroundColor Green |
||||
|
} |
||||
|
|
||||
|
# 1.2 Vite Build |
||||
|
Write-Host "" |
||||
|
$buildScript = "{0}-build:{1}" -f $uiName, $BuildEnv |
||||
|
Write-Host ("[2/3] npm run {0} ..." -f $buildScript) -ForegroundColor Yellow |
||||
|
|
||||
|
npm run $buildScript |
||||
|
if ($LASTEXITCODE -ne 0) { |
||||
|
Write-Host "Vite Build Failed!" -ForegroundColor Red |
||||
|
exit 1 |
||||
|
} |
||||
|
Write-Host "[2/3] Vite Build Success" -ForegroundColor Green |
||||
|
|
||||
|
# 1.3 Copy |
||||
|
Write-Host "" |
||||
|
Write-Host "[3/3] Copy Artifacts ..." -ForegroundColor Yellow |
||||
|
$buildOutputDir = Join-Path $uiProjectDir "dist\$BuildEnv" |
||||
|
if (-not (Test-Path $buildOutputDir)) { |
||||
|
Write-Host (" Build output not found: {0}" -f $buildOutputDir) -ForegroundColor Red |
||||
|
exit 1 |
||||
|
} |
||||
|
$targetDir = Join-Path $deployDir $uiOutputName |
||||
|
New-Item -ItemType Directory -Force -Path $targetDir | Out-Null |
||||
|
Copy-Item -Path (Join-Path $buildOutputDir "*") -Destination $targetDir -Recurse -Force |
||||
|
Write-Host (" [ui] {0}" -f $uiOutputName) -ForegroundColor Green |
||||
|
|
||||
|
# ====================================================== |
||||
|
# Part 2: zdxt-enforcement-code-app (enterprise + enforcement) |
||||
|
# ====================================================== |
||||
|
Write-Host "" |
||||
|
Write-Host ">>> [Part 2/2] zdxt-enforcement-code-app" -ForegroundColor Magenta |
||||
|
Write-Host "" |
||||
|
|
||||
|
# 2.1 npm install |
||||
|
Write-Host "[1/3] npm install ..." -ForegroundColor Yellow |
||||
|
Set-Location $appProjectDir |
||||
|
|
||||
|
if (-not (Test-Path (Join-Path $appProjectDir "node_modules"))) { |
||||
|
npm install |
||||
|
if ($LASTEXITCODE -ne 0) { |
||||
|
Write-Host "npm install Failed!" -ForegroundColor Red |
||||
|
exit 1 |
||||
|
} |
||||
|
Write-Host "[1/3] npm install Success" -ForegroundColor Green |
||||
|
} else { |
||||
|
Write-Host "[1/3] node_modules exists, skip install" -ForegroundColor Green |
||||
|
} |
||||
|
|
||||
|
# 2.2 Build each endpoint |
||||
|
Write-Host "" |
||||
|
Write-Host "[2/3] Vite Build (2 endpoints) ..." -ForegroundColor Yellow |
||||
|
|
||||
|
foreach ($ep in $appEndpoints) { |
||||
|
$mode = $ep.mode |
||||
|
$outputName = $ep.output |
||||
|
$script = "app-build:{0}-{1}" -f $mode, $BuildEnv |
||||
|
|
||||
|
Write-Host "" |
||||
|
Write-Host (" Building: npm run {0} ..." -f $script) -ForegroundColor Yellow |
||||
|
npm run $script |
||||
|
if ($LASTEXITCODE -ne 0) { |
||||
|
Write-Host (" Build [{0}] Failed!" -f $mode) -ForegroundColor Red |
||||
|
exit 1 |
||||
|
} |
||||
|
Write-Host (" Build [{0}] Success" -f $mode) -ForegroundColor Green |
||||
|
} |
||||
|
|
||||
|
# 2.3 Copy each endpoint |
||||
|
Write-Host "" |
||||
|
Write-Host "[3/3] Copy Artifacts ..." -ForegroundColor Yellow |
||||
|
|
||||
|
foreach ($ep in $appEndpoints) { |
||||
|
$mode = $ep.mode |
||||
|
$outputName = $ep.output |
||||
|
$appBuildDir = Join-Path $appProjectDir ("dist\{0}-{1}" -f $mode, $BuildEnv) |
||||
|
|
||||
|
if (-not (Test-Path $appBuildDir)) { |
||||
|
Write-Host (" Build output not found: {0}" -f $appBuildDir) -ForegroundColor Red |
||||
|
exit 1 |
||||
|
} |
||||
|
|
||||
|
$appTargetDir = Join-Path $deployDir $outputName |
||||
|
New-Item -ItemType Directory -Force -Path $appTargetDir | Out-Null |
||||
|
Copy-Item -Path (Join-Path $appBuildDir "*") -Destination $appTargetDir -Recurse -Force |
||||
|
Write-Host (" [app] {0}" -f $outputName) -ForegroundColor Green |
||||
|
} |
||||
|
|
||||
|
# ============ Done ============ |
||||
|
Write-Host "" |
||||
|
Write-Host "============================================" -ForegroundColor Cyan |
||||
|
Write-Host " All Client Builds Done!" -ForegroundColor Cyan |
||||
|
Write-Host (" Output: {0}" -f $deployDir) -ForegroundColor Cyan |
||||
|
Write-Host " |- zdxt-sup-web" -ForegroundColor Cyan |
||||
|
Write-Host " |- zdxt-ent-app" -ForegroundColor Cyan |
||||
|
Write-Host " |- zdxt-enf-app" -ForegroundColor Cyan |
||||
|
Write-Host "============================================" -ForegroundColor Cyan |
||||
|
Write-Host "" |
||||
@ -0,0 +1,4 @@ |
|||||
|
# 执法端开发环境 |
||||
|
VITE_PORT = 12002 |
||||
|
VITE_BASE_URL = 'http://localhost:17000/enf-ep' |
||||
|
VITE_DEFAULT_LOGIN = '/enforce/login' |
||||
@ -0,0 +1,4 @@ |
|||||
|
# 企业端开发环境 |
||||
|
VITE_PORT = 12001 |
||||
|
VITE_BASE_URL = 'http://localhost:17000/ent-ep' |
||||
|
VITE_DEFAULT_LOGIN = '/enterprise/login' |
||||
Loading…
Reference in new issue