67 lines
1.8 KiB
PowerShell
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"
|