-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathbuild.bat
More file actions
224 lines (196 loc) · 5.82 KB
/
build.bat
File metadata and controls
224 lines (196 loc) · 5.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
@echo off
REM ========================================
REM FastGateway 构建脚本
REM 功能: 构建前端, 构建后端, 构建TunnelClient, 将前端dist复制到后端wwwroot
REM ========================================
setlocal enabledelayedexpansion
REM 设置颜色输出
REM 绿色: 0A, 黄色: 0E, 红色: 0C
set "GREEN=[92m"
set "YELLOW=[93m"
set "RED=[91m"
set "RESET=[0m"
REM 获取脚本所在目录
set "SCRIPT_DIR=%~dp0"
set "WEB_DIR=%SCRIPT_DIR%web"
set "BACKEND_DIR=%SCRIPT_DIR%src\FastGateway"
set "TUNNEL_CLIENT_DIR=%SCRIPT_DIR%src\TunnelClient"
set "SOLUTION_FILE=%SCRIPT_DIR%FastGateway.sln"
set "BACKEND_WWWROOT=%BACKEND_DIR%\wwwroot"
set "FRONTEND_DIST=%WEB_DIR%\dist"
echo.
echo ========================================
echo FastGateway 构建开始
echo ========================================
echo.
REM 检查必要的工具
echo [*] 检查必要工具...
where dotnet >nul 2>&1
if errorlevel 1 (
echo [错误] 未找到 dotnet 命令!请确保已安装 .NET SDK
exit /b 1
)
echo [✓] dotnet 已安装
where node >nul 2>&1
if errorlevel 1 (
echo [错误] 未找到 node 命令!请确保已安装 Node.js
exit /b 1
)
echo [✓] node 已安装
where npm >nul 2>&1
if errorlevel 1 (
echo [错误] 未找到 npm 命令!请确保已安装 npm
exit /b 1
)
echo [✓] npm 已安装
echo.
REM ========================================
REM 第一步: 构建前端
REM ========================================
echo ========================================
echo 第一步: 构建前端应用
echo ========================================
echo.
if not exist "%WEB_DIR%" (
echo [错误] 前端目录不存在: %WEB_DIR%
exit /b 1
)
cd /d "%WEB_DIR%"
if errorlevel 1 (
echo [错误] 无法进入前端目录
exit /b 1
)
echo [*] 安装前端依赖...
call npm install
if errorlevel 1 (
echo [错误] 前端依赖安装失败
exit /b 1
)
echo [✓] 前端依赖安装完成
echo.
echo [*] 构建前端...
call npm run build
if errorlevel 1 (
echo [错误] 前端构建失败
exit /b 1
)
echo [✓] 前端构建完成
echo.
REM 检查dist目录
if not exist "%FRONTEND_DIST%" (
echo [错误] 前端dist目录未生成: %FRONTEND_DIST%
exit /b 1
)
echo [✓] 前端dist目录已生成
echo.
REM ========================================
REM 第二步: 清理后端旧的wwwroot
REM ========================================
echo ========================================
echo 第二步: 清理后端wwwroot目录
echo ========================================
echo.
if exist "%BACKEND_WWWROOT%" (
echo [*] 删除旧的 wwwroot 目录...
rmdir /s /q "%BACKEND_WWWROOT%"
if errorlevel 1 (
echo [警告] 删除 wwwroot 失败,继续进行...
) else (
echo [✓] 旧 wwwroot 已删除
)
) else (
echo [*] wwwroot 目录不存在,无需清理
)
echo.
REM ========================================
REM 第三步: 构建后端
REM ========================================
echo ========================================
echo 第三步: 构建后端应用
echo ========================================
echo.
cd /d "%SCRIPT_DIR%"
if errorlevel 1 (
echo [错误] 无法回到项目根目录
exit /b 1
)
echo [*] 恢复NuGet包...
dotnet restore "%SOLUTION_FILE%"
if errorlevel 1 (
echo [错误] NuGet包恢复失败
exit /b 1
)
echo [✓] NuGet包恢复完成
echo.
echo [*] 编译后端项目 (Release)...
dotnet publish "%SOLUTION_FILE%" -c Release -o "%BACKEND_DIR%\publish"
if errorlevel 1 (
echo [错误] 后端构建失败
exit /b 1
)
echo [✓] 后端构建完成
echo.
REM ========================================
REM 第四步: 复制前端dist到后端wwwroot
REM ========================================
echo ========================================
echo 第四步: 复制前端文件到后端
echo ========================================
echo.
if not exist "%BACKEND_DIR%\publish\wwwroot" (
echo [*] 创建 wwwroot 目录...
mkdir "%BACKEND_DIR%\publish\wwwroot"
if errorlevel 1 (
echo [错误] 无法创建 wwwroot 目录
exit /b 1
)
)
echo [*] 复制前端dist文件到后端wwwroot...
xcopy "%FRONTEND_DIST%\*" "%BACKEND_DIR%\publish\wwwroot\" /E /I /Y
if errorlevel 1 (
echo [错误] 复制前端文件失败
exit /b 1
)
echo [✓] 前端文件复制完成
echo.
REM ========================================
REM 第五步: 构建 TunnelClient
REM ========================================
echo ========================================
echo 第五步: 构建 TunnelClient 应用
echo ========================================
echo.
if not exist "%TUNNEL_CLIENT_DIR%" (
echo [错误] TunnelClient 目录不存在: %TUNNEL_CLIENT_DIR%
exit /b 1
)
cd /d "%SCRIPT_DIR%"
if errorlevel 1 (
echo [错误] 无法回到项目根目录
exit /b 1
)
echo [*] 编译 TunnelClient 项目 (Release)...
dotnet publish "%TUNNEL_CLIENT_DIR%\TunnelClient.csproj" -c Release -o "%TUNNEL_CLIENT_DIR%\publish"
if errorlevel 1 (
echo [错误] TunnelClient 构建失败
exit /b 1
)
echo [✓] TunnelClient 构建完成
echo.
REM ========================================
REM 构建完成
REM ========================================
echo ========================================
echo 构建成功完成!
echo ========================================
echo.
echo [✓] 前端构建: %FRONTEND_DIST%
echo [✓] 后端构建: %BACKEND_DIR%\publish
echo [✓] TunnelClient 构建: %TUNNEL_CLIENT_DIR%\publish
echo [✓] 前端文件已复制到: %BACKEND_DIR%\publish\wwwroot
echo.
echo 后端发布文件位于: %BACKEND_DIR%\publish
echo TunnelClient 发布文件位于: %TUNNEL_CLIENT_DIR%\publish
echo.
endlocal
exit /b 0