# Photography Frontend Makefile # 使用 bun 作为包管理器的前端项目构建脚本 .PHONY: help install dev build start lint clean test type-check preview # 默认目标 .DEFAULT_GOAL := help # 项目配置 PROJECT_NAME = photography-frontend PORT = 3000 BUILD_DIR = .next # 帮助信息 help: ## 显示帮助信息 @echo "$(PROJECT_NAME) - 摄影作品集前端项目 " @echo "" @echo "可用命令:" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' # 安装依赖 install: ## 安装项目依赖 @echo "📦 安装依赖..." bun install # 开发服务器 dev: ## 启动开发服务器 @echo "🚀 启动开发服务器..." bun run dev # 构建项目 build: ## 构建生产版本 @echo "🔨 构建生产版本..." bun run build # 启动生产服务器 start: build ## 启动生产服务器 @echo "🌐 启动生产服务器..." bun run start # 代码检查 lint: ## 运行代码检查 @echo "🔍 运行代码检查..." bun run lint # 类型检查 type-check: ## 运行TypeScript类型检查 @echo "📋 运行类型检查..." bunx tsc --noEmit # 清理构建文件 clean: ## 清理构建文件和缓存 @echo "🧹 清理构建文件..." rm -rf $(BUILD_DIR) rm -rf node_modules rm -f bun.lockb # 重新安装 reinstall: clean install ## 清理并重新安装依赖 @echo "♻️ 重新安装完成" # 预览构建结果 preview: build ## 预览构建结果 @echo "👀 预览构建结果..." cd $(BUILD_DIR) && bunx serve # 更新依赖 update: ## 更新所有依赖 @echo "⬆️ 更新依赖..." bun update # 添加依赖 add: ## 添加新依赖 (使用: make add PACKAGE=package-name) @if [ -z "$(PACKAGE)" ]; then \ echo "❌ 请指定包名: make add PACKAGE=package-name"; \ exit 1; \ fi @echo "➕ 添加依赖: $(PACKAGE)" bun add $(PACKAGE) # 添加开发依赖 add-dev: ## 添加开发依赖 (使用: make add-dev PACKAGE=package-name) @if [ -z "$(PACKAGE)" ]; then \ echo "❌ 请指定包名: make add-dev PACKAGE=package-name"; \ exit 1; \ fi @echo "➕ 添加开发依赖: $(PACKAGE)" bun add -D $(PACKAGE) # 移除依赖 remove: ## 移除依赖 (使用: make remove PACKAGE=package-name) @if [ -z "$(PACKAGE)" ]; then \ echo "❌ 请指定包名: make remove PACKAGE=package-name"; \ exit 1; \ fi @echo "➖ 移除依赖: $(PACKAGE)" bun remove $(PACKAGE) # 格式化代码 format: ## 格式化代码 @echo "✨ 格式化代码..." bunx prettier --write . # 检查项目状态 status: ## 检查项目状态 @echo "📊 项目状态:" @echo " Node版本: $(shell node --version)" @echo " Bun版本: $(shell bun --version)" @echo " 项目目录: $(PWD)" @echo " 构建目录: $(BUILD_DIR)" @if [ -f "bun.lockb" ]; then echo " 锁文件: ✅ bun.lockb"; else echo " 锁文件: ❌ 未找到"; fi # 开发环境设置 setup: install ## 设置开发环境 @echo "🛠️ 设置开发环境..." @if [ ! -f ".env.local" ]; then \ echo "📝 创建环境变量文件..."; \ cp .env.local.example .env.local 2>/dev/null || echo "NEXT_PUBLIC_API_URL=http://localhost:3001/api" > .env.local; \ fi @echo "✅ 开发环境设置完成" # 生产部署准备 deploy-prep: ## 准备生产部署 @echo "🚀 准备生产部署..." make clean make install make type-check make lint make build @echo "✅ 部署准备完成" # 快速启动 quick: ## 快速启动 (安装依赖并启动开发服务器) @echo "⚡ 快速启动..." make install make dev