MiniMaxReferralHub/Makefile
Chever John 9454359cd2
Initializes Docker setup for the project
Establishes a containerized development and production environment.

Creates Dockerfiles, docker-compose configurations, and associated scripts.

Prioritizes easy setup, dependency isolation, and platform consistency.
Enhances dev experience and simplifies deployment.
2025-08-26 21:45:40 +08:00

189 lines
5.3 KiB
Makefile
Raw Permalink 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.

# 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