Initial commit

This commit is contained in:
2025-12-09 16:07:11 +08:00
commit 547a79ddfd
49 changed files with 7752 additions and 0 deletions

97
start-server.sh Executable file
View File

@@ -0,0 +1,97 @@
#!/bin/bash
# 3D 店內導引 Demo - 啟動伺服器腳本
# 使用方式: ./start-server.sh [dev|prod]
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# PID 檔案位置
PID_FILE="$SCRIPT_DIR/.server.pid"
LOG_FILE="$SCRIPT_DIR/.server.log"
# 檢查是否已經在執行
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null 2>&1; then
echo "伺服器已在執行中 (PID: $PID)"
echo "請先執行 ./stop-server.sh 關閉伺服器"
exit 1
else
# 清理過期的 PID 檔案
rm -f "$PID_FILE"
fi
fi
# 取得本機 IP
get_local_ip() {
# 嘗試不同方式取得 IP
ip route get 1 2>/dev/null | awk '{print $7; exit}' || \
hostname -I 2>/dev/null | awk '{print $1}' || \
ifconfig 2>/dev/null | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1 || \
echo "無法取得"
}
LOCAL_IP=$(get_local_ip)
PORT=3000
# 判斷模式
MODE=${1:-dev}
echo "=========================================="
echo " 3D 店內導引 Demo 伺服器"
echo "=========================================="
echo ""
if [ "$MODE" = "prod" ]; then
echo "模式: 生產環境 (使用建構後的靜態檔案)"
echo ""
echo "正在建構專案..."
npm run build > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "建構失敗!請檢查錯誤訊息。"
exit 1
fi
echo "建構完成,啟動預覽伺服器..."
nohup npm run preview:host > "$LOG_FILE" 2>&1 &
else
echo "模式: 開發環境 (支援熱更新)"
echo ""
echo "正在啟動開發伺服器..."
nohup npm run dev:host > "$LOG_FILE" 2>&1 &
fi
# 儲存 PID
SERVER_PID=$!
echo $SERVER_PID > "$PID_FILE"
# 等待伺服器啟動
sleep 2
# 檢查是否成功啟動
if ps -p "$SERVER_PID" > /dev/null 2>&1; then
echo ""
echo "伺服器啟動成功!"
echo ""
echo "=========================================="
echo " 存取網址"
echo "=========================================="
echo ""
echo " 本機存取: http://localhost:$PORT"
echo " 遠端存取: http://$LOCAL_IP:$PORT"
echo ""
echo "=========================================="
echo ""
echo "PID: $SERVER_PID"
echo "日誌檔案: $LOG_FILE"
echo ""
echo "關閉伺服器: ./stop-server.sh"
echo ""
else
echo "伺服器啟動失敗!"
echo "請檢查日誌: cat $LOG_FILE"
rm -f "$PID_FILE"
exit 1
fi