forked from moyin/whale-town-front
feat:添加Web版本自动化部署系统
- 实现跨平台Web导出脚本(Windows/Linux/macOS) - 添加本地测试服务器启动脚本 - 配置Godot Web导出预设 - 创建Web资源目录结构 - 支持一键导出和本地测试
This commit is contained in:
188
scripts/serve_web.sh
Normal file
188
scripts/serve_web.sh
Normal file
@@ -0,0 +1,188 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 鲸鱼镇 本地Web服务器 (Linux/macOS)
|
||||
# 版本: 1.0.0
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 配置变量
|
||||
BUILD_DIR="build/web"
|
||||
PORT=8000
|
||||
FALLBACK_PORT=8080
|
||||
|
||||
echo "========================================"
|
||||
echo " 鲸鱼镇 本地Web服务器 v1.0"
|
||||
echo "========================================"
|
||||
echo
|
||||
|
||||
# 检查导出文件
|
||||
echo -e "${BLUE}[检查]${NC} 验证Web导出文件..."
|
||||
if [ ! -f "$BUILD_DIR/index.html" ]; then
|
||||
echo -e "${RED}[错误]${NC} 未找到Web导出文件!"
|
||||
echo
|
||||
echo "请先运行以下命令导出项目:"
|
||||
echo " ./scripts/build_web.sh"
|
||||
echo
|
||||
echo "或在Godot编辑器中导出Web版本到: $BUILD_DIR/"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查必要文件
|
||||
echo -e "${BLUE}[验证]${NC} 检查必要文件..."
|
||||
REQUIRED_FILES="index.html index.js index.wasm index.pck"
|
||||
MISSING_FILES=""
|
||||
|
||||
for file in $REQUIRED_FILES; do
|
||||
if [ ! -f "$BUILD_DIR/$file" ]; then
|
||||
MISSING_FILES="$MISSING_FILES $file"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$MISSING_FILES" ]; then
|
||||
echo -e "${RED}[错误]${NC} 缺少必要文件:$MISSING_FILES"
|
||||
echo "请重新导出项目"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查Python
|
||||
echo -e "${BLUE}[检查]${NC} 验证Python环境..."
|
||||
if ! command -v python3 &> /dev/null && ! command -v python &> /dev/null; then
|
||||
echo -e "${RED}[错误]${NC} 未找到Python!"
|
||||
echo
|
||||
echo "请安装Python 3.x:"
|
||||
echo " macOS: brew install python"
|
||||
echo " Ubuntu: sudo apt install python3"
|
||||
echo " 或访问: https://python.org/downloads"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 确定Python命令
|
||||
PYTHON_CMD="python3"
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
PYTHON_CMD="python"
|
||||
fi
|
||||
|
||||
# 获取Python版本
|
||||
PYTHON_VERSION=$($PYTHON_CMD --version 2>&1 | cut -d' ' -f2)
|
||||
echo -e "${GREEN}[信息]${NC} Python版本: $PYTHON_VERSION"
|
||||
|
||||
# 显示文件信息
|
||||
echo
|
||||
echo -e "${GREEN}[信息]${NC} Web文件统计:"
|
||||
TOTAL_SIZE=$(du -sb "$BUILD_DIR" | cut -f1)
|
||||
TOTAL_MB=$((TOTAL_SIZE / 1024 / 1024))
|
||||
|
||||
for file in "$BUILD_DIR"/*; do
|
||||
if [ -f "$file" ]; then
|
||||
filename=$(basename "$file")
|
||||
size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null)
|
||||
size_mb=$((size / 1024 / 1024))
|
||||
if [ $size_mb -gt 0 ]; then
|
||||
echo " $filename: ${size_mb} MB"
|
||||
else
|
||||
size_kb=$((size / 1024))
|
||||
echo " $filename: ${size_kb} KB"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
echo " 总大小: ${TOTAL_MB} MB"
|
||||
|
||||
# 检查端口占用
|
||||
echo
|
||||
echo -e "${BLUE}[网络]${NC} 检查端口占用..."
|
||||
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
|
||||
echo -e "${YELLOW}[警告]${NC} 端口 $PORT 已被占用,尝试使用 $FALLBACK_PORT"
|
||||
PORT=$FALLBACK_PORT
|
||||
|
||||
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
|
||||
echo -e "${RED}[错误]${NC} 端口 $PORT 也被占用!"
|
||||
echo "请手动指定端口: $PYTHON_CMD -m http.server [端口号]"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 获取本机IP地址
|
||||
LOCAL_IP=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1)
|
||||
if [ -z "$LOCAL_IP" ]; then
|
||||
LOCAL_IP=$(hostname -I | cut -d' ' -f1 2>/dev/null)
|
||||
fi
|
||||
if [ -z "$LOCAL_IP" ]; then
|
||||
LOCAL_IP="localhost"
|
||||
fi
|
||||
|
||||
# 显示启动信息
|
||||
echo
|
||||
echo -e "${GREEN}[启动]${NC} 启动HTTP服务器..."
|
||||
echo " 端口: $PORT"
|
||||
echo " 目录: $BUILD_DIR"
|
||||
echo " Python: $PYTHON_VERSION"
|
||||
echo
|
||||
|
||||
echo "========================================"
|
||||
echo -e "${GREEN} 访问地址${NC}"
|
||||
echo "========================================"
|
||||
echo " 本地访问: http://localhost:$PORT"
|
||||
echo " 局域网访问: http://$LOCAL_IP:$PORT"
|
||||
echo
|
||||
|
||||
echo -e "${YELLOW}[控制]${NC} 服务器控制:"
|
||||
echo " 停止服务器: Ctrl+C"
|
||||
echo " 重启服务器: 关闭后重新运行脚本"
|
||||
echo
|
||||
|
||||
echo -e "${BLUE}[调试]${NC} 调试工具:"
|
||||
echo " 开发者工具: F12"
|
||||
echo " 控制台日志: 查看浏览器Console"
|
||||
echo " 网络请求: 查看Network标签"
|
||||
echo
|
||||
|
||||
echo "========================================"
|
||||
|
||||
# 尝试自动打开浏览器
|
||||
echo -e "${BLUE}[浏览器]${NC} 尝试打开默认浏览器..."
|
||||
if command -v open &> /dev/null; then
|
||||
# macOS
|
||||
open "http://localhost:$PORT" 2>/dev/null
|
||||
elif command -v xdg-open &> /dev/null; then
|
||||
# Linux
|
||||
xdg-open "http://localhost:$PORT" 2>/dev/null
|
||||
else
|
||||
echo -e "${YELLOW}[提示]${NC} 无法自动打开浏览器,请手动访问上述地址"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}[就绪]${NC} 服务器启动中..."
|
||||
echo
|
||||
|
||||
# 切换到构建目录并启动服务器
|
||||
cd "$BUILD_DIR"
|
||||
|
||||
# 创建简单的服务器日志
|
||||
echo "[$(date)] 服务器启动 - 端口:$PORT" >> server.log
|
||||
|
||||
# 设置信号处理
|
||||
trap 'echo -e "\n${YELLOW}[停止]${NC} 服务器已停止"; echo "[$(date)] 服务器停止" >> server.log; exit 0' INT
|
||||
|
||||
# 启动Python HTTP服务器
|
||||
$PYTHON_CMD -m http.server $PORT
|
||||
|
||||
# 服务器停止后的清理
|
||||
echo
|
||||
echo -e "${YELLOW}[停止]${NC} 服务器已停止"
|
||||
echo "[$(date)] 服务器停止" >> server.log
|
||||
|
||||
# 返回原目录
|
||||
cd ../..
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}[完成]${NC} 感谢使用鲸鱼镇Web服务器!"
|
||||
echo
|
||||
Reference in New Issue
Block a user