Files
EIS-dotnet/scripts/publish.ps1
T
2026-07-23 19:59:15 +08:00

67 lines
1.8 KiB
PowerShell

[CmdletBinding()]
param(
[string]$OutputDirectory = (Join-Path $PSScriptRoot '..\artifacts\publish')
)
$ErrorActionPreference = 'Stop'
$repositoryRoot = (Resolve-Path -LiteralPath (Join-Path $PSScriptRoot '..')).Path
$publishRoot = [IO.Path]::GetFullPath(
$(if ([IO.Path]::IsPathRooted($OutputDirectory)) {
$OutputDirectory
}
else {
Join-Path $repositoryRoot $OutputDirectory
}))
$clientRoot = Join-Path $repositoryRoot 'src\Eis.Web\ClientApp'
Push-Location $clientRoot
try {
$npmInstallArgs = @('ci')
& npm @npmInstallArgs
$npmInstallExitCode = $LASTEXITCODE
if ($npmInstallExitCode -ne 0) {
throw "npm ci 失败,退出码:$npmInstallExitCode"
}
$npmBuildArgs = @('run', 'build')
& npm @npmBuildArgs
$npmBuildExitCode = $LASTEXITCODE
if ($npmBuildExitCode -ne 0) {
throw "Vue 生产构建失败,退出码:$npmBuildExitCode"
}
}
finally {
Pop-Location
}
$projects = @(
@{
Project = Join-Path $repositoryRoot 'src\Eis.Web\Eis.Web.csproj'
Output = Join-Path $publishRoot 'web'
},
@{
Project = Join-Path $repositoryRoot 'src\Eis.Tools\Eis.Tools.csproj'
Output = Join-Path $publishRoot 'tools'
}
)
foreach ($item in $projects) {
$nativeArgs = @(
'publish'
$item.Project
'--configuration'
'Release'
'--output'
$item.Output
)
& dotnet @nativeArgs
$exitCode = $LASTEXITCODE
if ($exitCode -ne 0) {
throw "dotnet publish 失败,退出码:$exitCode"
}
}
Write-Host "Web 发布目录:$(Join-Path $publishRoot 'web')"
Write-Host "数据库工具目录:$(Join-Path $publishRoot 'tools')"
Write-Host "工具示例:dotnet $(Join-Path $publishRoot 'tools\Eis.Tools.dll') database seed --dry-run"