2025-08-21 11:07:54 +08:00
|
|
|
|
# Dream-Machine 采购清单管理系统 Makefile
|
|
|
|
|
|
# 提供统一的项目管理命令
|
|
|
|
|
|
|
|
|
|
|
|
# 颜色定义
|
|
|
|
|
|
GREEN = \033[32m
|
|
|
|
|
|
YELLOW = \033[33m
|
|
|
|
|
|
RED = \033[31m
|
|
|
|
|
|
BLUE = \033[34m
|
|
|
|
|
|
RESET = \033[0m
|
|
|
|
|
|
|
|
|
|
|
|
# 项目信息
|
|
|
|
|
|
PROJECT_NAME = dream-machine-purchase-list
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
2025-08-21 14:46:11 +08:00
|
|
|
|
# Docker(平台由 scripts/dev-up.sh 自动探测,可通过环境变量 DOCKER_PLATFORM 覆盖)
|
|
|
|
|
|
|
2025-08-21 11:07:54 +08:00
|
|
|
|
# 默认目标
|
|
|
|
|
|
.PHONY: help
|
|
|
|
|
|
help: ## 显示帮助信息
|
|
|
|
|
|
@echo "$(BLUE)$(PROJECT_NAME) v$(VERSION)$(RESET)"
|
|
|
|
|
|
@echo "$(BLUE)采购清单管理系统 - 开发工具$(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
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: deps-update
|
|
|
|
|
|
deps-update: ## 更新依赖包
|
|
|
|
|
|
@echo "$(YELLOW)更新依赖包...$(RESET)"
|
|
|
|
|
|
$(PKG) update
|
|
|
|
|
|
@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)"
|
|
|
|
|
|
@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)"
|
|
|
|
|
|
|
2025-08-21 14:46:11 +08:00
|
|
|
|
# ----- 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)构建生产镜像 (linux/amd64)$(RESET)"
|
|
|
|
|
|
bash scripts/prod-build.sh
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: prod-up
|
|
|
|
|
|
prod-up: ## 启动生产环境 (使用生产镜像)
|
|
|
|
|
|
@echo "$(GREEN)启动生产环境 (linux/amd64)$(RESET)"
|
|
|
|
|
|
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
|
|
|
|
|
|
|
2025-08-21 11:07:54 +08:00
|
|
|
|
# 设置默认目标
|
|
|
|
|
|
.DEFAULT_GOAL := help
|