Commit 61cac09b authored by xiezhi's avatar xiezhi

fix makefile

parent 0c0f5986
...@@ -41,19 +41,10 @@ install: ...@@ -41,19 +41,10 @@ install:
fi fi
@echo "✅ KaboomJS 游戏项目安装完成!" @echo "✅ KaboomJS 游戏项目安装完成!"
# 开发模式运行(前台运行,带热重载) # 运行命令
.PHONY: dev
dev: install
@echo "🚀 启动 KaboomJS 游戏开发服务器..."
@echo "服务器将在端口 $(APP_PORT) 上运行"
@echo "浏览器将自动打开游戏页面"
@echo "按 Ctrl+C 停止服务器"
@$(NPM) run dev
# 生产模式运行(后台运行)
.PHONY: run .PHONY: run
run: install run: install
@echo "🎮 启动 KaboomJS 游戏服务器(生产模式)..." @echo "🎮 启动 KaboomJS 游戏服务器..."
@mkdir -p $(dir $(LOG_FILE)) @mkdir -p $(dir $(LOG_FILE))
@if [ -f "$(PID_FILE)" ]; then \ @if [ -f "$(PID_FILE)" ]; then \
echo "服务器已在运行中,PID: $$(cat $(PID_FILE))"; \ echo "服务器已在运行中,PID: $$(cat $(PID_FILE))"; \
...@@ -66,7 +57,7 @@ run: install ...@@ -66,7 +57,7 @@ run: install
@echo "🎯 游戏访问地址: http://localhost:$(APP_PORT)/" @echo "🎯 游戏访问地址: http://localhost:$(APP_PORT)/"
@echo "📋 查看日志: tail -f $(LOG_FILE)" @echo "📋 查看日志: tail -f $(LOG_FILE)"
# 停止服务器 # 停止命令
.PHONY: stop .PHONY: stop
stop: stop:
@echo "🛑 停止 KaboomJS 游戏服务器..." @echo "🛑 停止 KaboomJS 游戏服务器..."
...@@ -88,172 +79,4 @@ stop: ...@@ -88,172 +79,4 @@ stop:
else \ else \
echo "服务器未运行"; \ echo "服务器未运行"; \
fi fi
@echo "✅ 停止操作完成"
# 强制停止所有相关进程
.PHONY: kill
kill:
@echo "🔥 强制停止所有相关的游戏服务器进程..."
@PIDS=$$(ps aux | grep -E "http-server.*$(APP_PORT)|npm.*start" | grep -v grep | awk '{print $$2}'); \
if [ -n "$$PIDS" ]; then \
echo "找到相关进程: $$PIDS"; \
for PID in $$PIDS; do \
echo "正在杀死进程 $$PID..."; \
kill -9 $$PID 2>/dev/null || true; \
done; \
sleep 1; \
echo "✅ 所有相关进程已被强制停止"; \
else \
echo "未找到相关进程"; \
fi
@rm -f $(PID_FILE)
@echo "✅ 强制停止操作完成"
# 重启服务器
.PHONY: restart
restart: stop run
# 查看服务器状态
.PHONY: status
status:
@echo "📊 检查 KaboomJS 游戏服务器状态..."
@if [ -f "$(PID_FILE)" ]; then \
PID=$$(cat $(PID_FILE)); \
if ps -p $$PID > /dev/null 2>&1; then \
echo "✅ 服务器正在运行"; \
echo " PID: $$PID"; \
echo " 端口: $(APP_PORT)"; \
echo " 访问地址: http://localhost:$(APP_PORT)/"; \
echo " 日志文件: $(LOG_FILE)"; \
else \
echo "❌ 服务器未运行(PID文件存在但进程不存在)"; \
rm -f $(PID_FILE); \
fi; \
else \
echo "❌ 服务器未运行"; \
fi
# 构建Docker镜像
.PHONY: docker-build
docker-build:
@echo "🐳 构建 KaboomJS 游戏 Docker 镜像..."
@$(DOCKER) build -t $(DOCKER_IMAGE):$(DOCKER_TAG) .
@echo "✅ Docker 镜像构建完成: $(DOCKER_IMAGE):$(DOCKER_TAG)"
# 运行Docker容器
.PHONY: docker-run
docker-run: docker-build
@echo "🚀 启动 KaboomJS 游戏 Docker 容器..."
@$(DOCKER) run -d \
--name $(APP_NAME)-container \
-p $(APP_PORT):3000 \
$(DOCKER_IMAGE):$(DOCKER_TAG)
@echo "✅ Docker 容器已启动"
@echo "🎯 游戏访问地址: http://localhost:$(APP_PORT)/"
# 停止Docker容器
.PHONY: docker-stop
docker-stop:
@echo "🛑 停止 KaboomJS 游戏 Docker 容器..."
@$(DOCKER) stop $(APP_NAME)-container 2>/dev/null || true
@$(DOCKER) rm $(APP_NAME)-container 2>/dev/null || true
@echo "✅ Docker 容器已停止并删除"
# 查看Docker容器日志
.PHONY: docker-logs
docker-logs:
@echo "📋 查看 KaboomJS 游戏 Docker 容器日志..."
@$(DOCKER) logs -f $(APP_NAME)-container
# 测试游戏
.PHONY: test
test:
@echo "🧪 测试 KaboomJS 游戏项目..."
@echo "检查必要文件..."
@for file in package.json index.html game.js; do \
if [ -f "$$file" ]; then \
echo "✅ $$file 存在"; \
else \
echo "❌ $$file 不存在"; \
exit 1; \
fi; \
done
@echo "检查依赖..."
@$(NPM) list --depth=0 > /dev/null 2>&1 && echo "✅ 依赖检查通过" || echo "⚠️ 依赖可能有问题"
@echo "✅ 测试完成!"
# 清理文件
.PHONY: clean
clean:
@echo "🧹 清理 KaboomJS 游戏项目文件..."
@rm -rf node_modules
@rm -rf .logs
@rm -rf dist
@rm -rf build
@rm -f package-lock.json
@echo "✅ 清理完成!"
# 完全清理(包括Docker)
.PHONY: clean-all
clean-all: clean docker-stop
@echo "🧹 完全清理项目和Docker资源..."
@$(DOCKER) rmi $(DOCKER_IMAGE):$(DOCKER_TAG) 2>/dev/null || true
@echo "✅ 完全清理完成!"
# 显示项目信息
.PHONY: info
info:
@echo "🎮 KaboomJS 游戏项目信息"
@echo "=========================="
@echo "项目名称: $(APP_NAME)"
@echo "Node.js版本要求: $(NODE_VERSION)"
@echo "默认端口: $(APP_PORT)"
@echo "主文件: $(MAIN_FILE)"
@echo "游戏文件: game.js"
@echo "Docker镜像: $(DOCKER_IMAGE):$(DOCKER_TAG)"
@echo ""
@if [ -f "package.json" ]; then \
echo "项目详情:"; \
$(NODE) -p "const pkg = require('./package.json'); \
console.log(' 名称: ' + pkg.name); \
console.log(' 版本: ' + pkg.version); \
console.log(' 描述: ' + pkg.description);"; \
fi
# 显示帮助信息
.PHONY: help
help:
@echo "🎮 KaboomJS 游戏项目 Makefile"
@echo "============================="
@echo ""
@echo "基本命令:"
@echo " make install - 安装项目依赖"
@echo " make dev - 启动开发服务器(前台,热重载)"
@echo " make run - 启动生产服务器(后台运行)"
@echo " make stop - 停止服务器"
@echo " make restart - 重启服务器"
@echo " make status - 查看服务器状态"
@echo " make kill - 强制停止所有相关进程"
@echo ""
@echo "Docker命令:"
@echo " make docker-build - 构建Docker镜像"
@echo " make docker-run - 运行Docker容器"
@echo " make docker-stop - 停止Docker容器"
@echo " make docker-logs - 查看容器日志"
@echo ""
@echo "维护命令:"
@echo " make test - 测试项目"
@echo " make clean - 清理项目文件"
@echo " make clean-all - 完全清理(包括Docker)"
@echo " make info - 显示项目信息"
@echo " make help - 显示此帮助信息"
@echo ""
@echo "使用示例:"
@echo " make dev # 开发模式启动游戏"
@echo " make run # 生产模式启动游戏"
@echo " make docker-run # 使用Docker运行游戏"
@echo " make status # 查看游戏服务器状态"
@echo ""
@echo "环境变量:"
@echo " APP_PORT_1 - 服务器端口(默认: 3000)"
@echo ""
@echo "🎯 游戏访问地址: http://localhost:$(APP_PORT)/"
...@@ -137,25 +137,18 @@ const newObject = k.add([ ...@@ -137,25 +137,18 @@ const newObject = k.add([
]); ]);
``` ```
## 🔧 可用命令 ## 🔧 Makefile 命令
### 基本命令 本模板提供了三个核心 Makefile 命令:
```bash
make install # 安装项目依赖 - `make install`: 检查 Node.js 和 npm 版本,安装项目依赖
make dev # 启动开发服务器(前台,热重载) - `make run`: 启动 KaboomJS 游戏服务器(后台运行)
make run # 启动生产服务器(后台运行) - `make stop`: 停止 KaboomJS 游戏服务器
make stop # 停止服务器
make restart # 重启服务器
make status # 查看服务器状态
make kill # 强制停止所有相关进程
```
### Docker 命令 ### 其他可用命令
```bash ```bash
make docker-build # 构建Docker镜像 npm run dev # 开发模式(前台运行,热重载)
make docker-run # 运行Docker容器 npm start # 直接启动游戏服务器
make docker-stop # 停止Docker容器
make docker-logs # 查看容器日志
``` ```
### 维护命令 ### 维护命令
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment