# MiniMax Referral Hub Makefile # 提供统一的项目管理命令 # 颜色定义 GREEN = \033[32m YELLOW = \033[33m RED = \033[31m BLUE = \033[34m RESET = \033[0m # 项目信息 PROJECT_NAME = minimax-referral-hub VERSION = 1.0.0 BUILD_DIR = dist NODE_MODULES = node_modules # 包管理器自动检测(优先 pnpm,否者回退 npm) PKG = $(shell command -v pnpm >/dev/null 2>&1 && echo pnpm || echo npm) # 默认目标 .PHONY: help help: ## 显示帮助信息 @echo "$(BLUE)$(PROJECT_NAME) v$(VERSION)$(RESET)" @echo "$(BLUE)Referral Hub - 开发工具$(RESET)" @echo "" @echo "$(GREEN)可用命令:$(RESET)" @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(YELLOW)%-15s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST) # 安装和依赖管理 .PHONY: install install: ## 安装项目依赖 @echo "$(GREEN)正在安装依赖...$(RESET)" $(PKG) install @echo "$(GREEN)依赖安装完成!$(RESET)" .PHONY: clean-install clean-install: clean install ## 清理后重新安装依赖 @echo "$(GREEN)清理并重新安装完成!$(RESET)" # 开发环境 .PHONY: dev dev: install ## 安装依赖并启动开发服务器 @echo "$(GREEN)启动开发服务器...$(RESET)" $(PKG) run dev .PHONY: start start: ## 启动开发服务器(需要先安装依赖) @echo "$(GREEN)启动开发服务器...$(RESET)" $(PKG) run dev # 构建和生产 .PHONY: build build: ## 构建生产版本 @echo "$(GREEN)构建生产版本...$(RESET)" $(PKG) run build @echo "$(GREEN)构建完成! 输出目录: $(BUILD_DIR)$(RESET)" .PHONY: preview preview: ## 预览生产版本 @echo "$(GREEN)启动生产版本预览...$(RESET)" $(PKG) run preview # 代码质量 .PHONY: lint lint: ## 运行代码质量检查 @echo "$(GREEN)运行 ESLint 检查...$(RESET)" $(PKG) run lint .PHONY: lint-fix lint-fix: ## 自动修复代码质量问题 @echo "$(GREEN)自动修复代码问题...$(RESET)" $(PKG) run lint -- --fix # 清理 .PHONY: clean clean: ## 清理构建文件和依赖 @echo "$(YELLOW)清理构建文件和依赖...$(RESET)" rm -rf $(BUILD_DIR) rm -rf $(NODE_MODULES) rm -rf .vite @echo "$(GREEN)清理完成!$(RESET)" .PHONY: clean-build clean-build: ## 清理构建文件 @echo "$(YELLOW)清理构建文件...$(RESET)" rm -rf $(BUILD_DIR) rm -rf .vite @echo "$(GREEN)构建文件清理完成!$(RESET)" # 项目维护 .PHONY: check check: lint ## 运行所有检查 @echo "$(GREEN)所有检查完成!$(RESET)" .PHONY: fresh fresh: clean-install build ## 全新安装并构建 @echo "$(GREEN)全新构建完成!$(RESET)" # 开发工具 .PHONY: deps-check deps-check: ## 检查依赖包状态 @echo "$(GREEN)检查依赖包状态...$(RESET)" $(PKG) outdated || true .PHONY: deps-update deps-update: ## 更新依赖包 @echo "$(YELLOW)更新依赖包...$(RESET)" $(PKG) update || true @echo "$(GREEN)依赖包更新完成!$(RESET)" # 部署相关 .PHONY: pre-deploy pre-deploy: clean-install lint build ## 部署前检查 @echo "$(GREEN)部署前检查完成!$(RESET)" .PHONY: size-check size-check: build ## 检查构建文件大小 @echo "$(GREEN)构建文件大小:$(RESET)" @du -sh $(BUILD_DIR) @echo "$(GREEN)主要文件:$(RESET)" @find $(BUILD_DIR) -name "*.js" -o -name "*.css" | xargs ls -lh # 信息显示 .PHONY: info info: ## 显示项目信息 @echo "$(BLUE)项目信息:$(RESET)" @echo " 名称: $(PROJECT_NAME)" @echo " 版本: $(VERSION)" @echo " 构建目录: $(BUILD_DIR)" @echo " Node.js 版本: $$(node --version 2>/dev/null || echo '未安装')" @echo " 包管理器: $(PKG) ($$($(PKG) --version))" @echo "" @echo "$(BLUE)目录状态:$(RESET)" @echo " 依赖已安装: $$([ -d $(NODE_MODULES) ] && echo '✓' || echo '✗')" @echo " 构建文件存在: $$([ -d $(BUILD_DIR) ] && echo '✓' || echo '✗')" # 快捷组合命令 .PHONY: quick-start quick-start: install start ## 快速开始开发(安装依赖并启动) .PHONY: quick-build quick-build: lint build ## 快速构建(检查代码并构建) # 本地测试完整流程 .PHONY: test-flow test-flow: clean-install lint build preview ## 完整测试流程 @echo "$(GREEN)完整测试流程完成!$(RESET)" # ----- Docker 开发/生产 ----- .PHONY: dev-up dev-up: ## 启动开发环境 (自动探测平台;可通过 DOCKER_PLATFORM=linux/arm64 覆盖) @echo "$(GREEN)启动开发环境 (Docker)$(RESET)" bash scripts/dev-up.sh .PHONY: prod-build prod-build: build ## 构建生产镜像 (前端在宿主机构建) @echo "$(GREEN)构建生产镜像$(RESET)" bash scripts/prod-build.sh .PHONY: prod-up prod-up: ## 启动生产环境 (使用生产镜像) @echo "$(GREEN)启动生产环境$(RESET)" bash scripts/prod-up.sh .PHONY: rebuild rebuild: ## 重建生产镜像(不切换容器) @echo "$(GREEN)重建生产镜像$(RESET)" bash scripts/prod-build.sh .PHONY: redeploy redeploy: ## 重建镜像并重新部署(零配置一键发布) @echo "$(GREEN)重建镜像并重新部署到生产环境$(RESET)" bash scripts/prod-build.sh bash scripts/prod-up.sh .PHONY: dev-down dev-down: ## 停止开发环境 (保留数据卷) @echo "$(YELLOW)停止开发环境 (Docker)$(RESET)" bash scripts/dev-down.sh .PHONY: prod-down prod-down: ## 停止生产环境 (保留数据卷) @echo "$(YELLOW)停止生产环境 (Docker)$(RESET)" bash scripts/prod-down.sh # 设置默认目标 .DEFAULT_GOAL := help