Files
whale-town-front/scripts/build_web.bat
moyin 0935c5fd76 feat:添加Web版本自动化部署系统
- 实现跨平台Web导出脚本(Windows/Linux/macOS)
- 添加本地测试服务器启动脚本
- 配置Godot Web导出预设
- 创建Web资源目录结构
- 支持一键导出和本地测试
2025-12-25 23:06:29 +08:00

235 lines
7.0 KiB
Batchfile
Raw 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.
@echo off
setlocal enabledelayedexpansion
echo ========================================
echo 鲸鱼镇 Web版本导出工具 v1.0
echo ========================================
echo.
REM 配置变量 - 请根据实际情况修改
set "PROJECT_NAME=whaleTown"
set "BUILD_DIR=build\web"
set "GODOT_PATH=D:\technology\biancheng\Godot\Godot_v4.5.1-stable_win64.exe"
set "EXPORT_PRESET=Web"
set "VERSION=1.0.0"
REM 颜色代码Windows 10+
set "RED=[91m"
set "GREEN=[92m"
set "YELLOW=[93m"
set "BLUE=[94m"
set "RESET=[0m"
REM 检查Godot是否存在
echo %BLUE%[检查]%RESET% 验证Godot安装...
if not exist "%GODOT_PATH%" (
echo %RED%[错误]%RESET% 未找到Godot可执行文件: %GODOT_PATH%
echo 请修改脚本中的GODOT_PATH变量或安装Godot 4.5+
echo 下载地址: https://godotengine.org/download
echo.
pause
exit /b 1
)
REM 检查项目文件
echo %BLUE%[检查]%RESET% 验证项目文件...
if not exist "project.godot" (
echo %RED%[错误]%RESET% 未找到project.godot文件
echo 请在项目根目录运行此脚本
echo.
pause
exit /b 1
)
REM 显示项目信息
echo %GREEN%[信息]%RESET% 项目信息:
echo 项目名称: %PROJECT_NAME%
echo 版本号: %VERSION%
echo Godot路径: %GODOT_PATH%
echo 导出预设: %EXPORT_PRESET%
echo 输出目录: %BUILD_DIR%
echo.
REM 创建构建目录结构
echo %BLUE%[构建]%RESET% 准备构建环境...
if not exist "build" mkdir "build"
if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
if not exist "scripts" mkdir "scripts"
REM 备份旧版本(如果存在)
if exist "%BUILD_DIR%\index.html" (
echo %YELLOW%[备份]%RESET% 备份旧版本...
set "BACKUP_DIR=build\backup\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%"
set "BACKUP_DIR=!BACKUP_DIR: =0!"
mkdir "!BACKUP_DIR!" 2>nul
xcopy "%BUILD_DIR%\*" "!BACKUP_DIR%\" /Y /Q >nul 2>&1
echo 备份位置: !BACKUP_DIR!\
)
REM 清理旧文件
echo %BLUE%[清理]%RESET% 清理旧的导出文件...
if exist "%BUILD_DIR%\*" del /q "%BUILD_DIR%\*" >nul 2>&1
REM 检查导出预设
echo %BLUE%[验证]%RESET% 检查导出预设...
"%GODOT_PATH%" --headless --export-debug "%EXPORT_PRESET%" --check-only >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo %RED%[错误]%RESET% 导出预设 "%EXPORT_PRESET%" 不存在或配置错误!
echo 请在Godot编辑器中创建Web导出预设
echo.
pause
exit /b 1
)
REM 导出项目
echo %GREEN%[导出]%RESET% 开始导出Web版本...
echo 目标文件: %BUILD_DIR%\index.html
echo 请稍候...
echo.
"%GODOT_PATH%" --headless --export-release "%EXPORT_PRESET%" "%BUILD_DIR%\index.html"
if %ERRORLEVEL% neq 0 (
echo %RED%[失败]%RESET% 导出失败!错误代码: %ERRORLEVEL%
echo.
echo 可能的原因:
echo 1. 导出模板未安装
echo 2. 项目配置错误
echo 3. 资源文件损坏
echo.
pause
exit /b %ERRORLEVEL%
)
REM 验证导出文件
echo %BLUE%[验证]%RESET% 验证导出文件...
set "REQUIRED_FILES=index.html index.js index.wasm index.pck"
set "MISSING_FILES="
for %%f in (%REQUIRED_FILES%) do (
if not exist "%BUILD_DIR%\%%f" (
set "MISSING_FILES=!MISSING_FILES! %%f"
)
)
if not "!MISSING_FILES!"=="" (
echo %RED%[错误]%RESET% 缺少必要文件:!MISSING_FILES!
echo 导出可能不完整请检查Godot配置
echo.
pause
exit /b 1
)
REM 复制额外资源
echo %BLUE%[复制]%RESET% 复制额外资源...
if exist "assets\web\favicon.ico" copy "assets\web\favicon.ico" "%BUILD_DIR%\" >nul 2>&1
if exist "assets\web\manifest.json" copy "assets\web\manifest.json" "%BUILD_DIR%\" >nul 2>&1
if exist "assets\web\service-worker.js" copy "assets\web\service-worker.js" "%BUILD_DIR%\" >nul 2>&1
if exist "assets\web\custom_shell.html" copy "assets\web\custom_shell.html" "%BUILD_DIR%\" >nul 2>&1
REM 生成部署信息
echo %BLUE%[生成]%RESET% 生成部署信息...
(
echo {
echo "project": "%PROJECT_NAME%",
echo "version": "%VERSION%",
echo "build_time": "%date% %time%",
echo "platform": "web",
echo "godot_version": "4.5",
echo "export_preset": "%EXPORT_PRESET%",
echo "build_machine": "%COMPUTERNAME%",
echo "build_user": "%USERNAME%"
echo }
) > "%BUILD_DIR%\deploy_info.json"
REM 生成.htaccess文件
echo %BLUE%[配置]%RESET% 生成Apache配置文件...
(
echo # 鲸鱼镇 Web版本 Apache配置
echo # 自动生成于 %date% %time%
echo.
echo # MIME类型配置
echo AddType application/wasm .wasm
echo AddType application/octet-stream .pck
echo AddType application/javascript .js
echo.
echo # 启用压缩
echo ^<IfModule mod_deflate.c^>
echo AddOutputFilterByType DEFLATE text/html text/css application/javascript application/wasm
echo AddOutputFilterByType DEFLATE application/json application/xml
echo ^</IfModule^>
echo.
echo # 缓存控制
echo ^<IfModule mod_expires.c^>
echo ExpiresActive On
echo ExpiresByType application/wasm "access plus 1 month"
echo ExpiresByType application/octet-stream "access plus 1 month"
echo ExpiresByType application/javascript "access plus 1 week"
echo ExpiresByType text/html "access plus 1 hour"
echo ^</IfModule^>
echo.
echo # CORS配置
echo ^<IfModule mod_headers.c^>
echo Header set Access-Control-Allow-Origin "*"
echo Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
echo Header set Access-Control-Allow-Headers "Content-Type, Authorization"
echo Header set Cross-Origin-Embedder-Policy "require-corp"
echo Header set Cross-Origin-Opener-Policy "same-origin"
echo ^</IfModule^>
) > "%BUILD_DIR%\.htaccess"
REM 计算文件大小
echo %BLUE%[统计]%RESET% 计算文件大小...
set "TOTAL_SIZE=0"
for %%f in ("%BUILD_DIR%\*") do (
set /a "TOTAL_SIZE+=%%~zf"
)
set /a "TOTAL_MB=TOTAL_SIZE/1024/1024"
REM 显示构建结果
echo.
echo ========================================
echo %GREEN% 导出成功!%RESET%
echo ========================================
echo.
echo %GREEN%[完成]%RESET% 构建统计:
echo 导出位置: %BUILD_DIR%\
echo 总文件大小: %TOTAL_MB% MB
echo 构建时间: %date% %time%
echo.
echo %BLUE%[文件]%RESET% 导出文件列表:
for %%f in ("%BUILD_DIR%\*") do (
set "size=%%~zf"
set /a "size_mb=!size!/1024/1024"
if !size_mb! gtr 0 (
echo %%~nxf: !size_mb! MB
) else (
set /a "size_kb=!size!/1024"
echo %%~nxf: !size_kb! KB
)
)
echo.
echo %YELLOW%[下一步]%RESET% 部署选项:
echo 1. 本地测试: scripts\serve_web.bat
echo 2. 上传到服务器: 将 %BUILD_DIR%\ 目录上传
echo 3. 查看文档: docs\web_deployment_guide.md
echo.
echo %GREEN%[提示]%RESET% 部署前请确保:
echo - 服务器支持WASM MIME类型
echo - 配置了正确的CORS头
echo - 启用了文件压缩
echo.
REM 询问是否启动本地服务器
set /p "START_SERVER=是否启动本地测试服务器?(y/N): "
if /i "!START_SERVER!"=="y" (
echo.
echo %GREEN%[启动]%RESET% 启动本地服务器...
call "scripts\serve_web.bat"
) else (
echo.
echo 构建完成!可以手动运行 scripts\serve_web.bat 进行测试
)
pause