本次提交包含3个重要功能的完成: 1. 📖 用户使用文档完成 - 创建完整的用户使用手册 (docs/USER_MANUAL.md) - 管理后台使用指南 (登录、照片管理、分类管理) - 前端网站使用说明 (浏览、搜索、移动端) - 部署运维指南 (环境准备、监控维护) - 故障排查指南 (错误处理、性能优化) - 技术支持体系和问题反馈渠道 2. 🐳 后端Docker容器化完成 - 多阶段构建Dockerfile (golang:1.23-alpine → scratch) - Docker Compose开发环境 (PostgreSQL + Redis + API) - 优化的构建配置和安全用户设置 - 健康检查和环境变量管理 - 更新Makefile添加Docker命令 3. 🏗️ 前端Docker容器化完成 - 多阶段构建Dockerfile (node:20-alpine → nginx:1.25-alpine) - 集成bun包管理器优化构建速度 - 优化的Nginx配置 (缓存、压缩、安全头部) - Docker Compose多模式支持 (开发/生产/代理) - 更新Makefile添加Docker命令 4. 📋 完整的Docker编排系统 - 项目根目录完整的docker-compose.yml - 支持数据库、缓存、API、前端、管理后台的统一部署 - 自动化Docker设置脚本 (docker-setup.sh) - 生产环境监控和日志收集配置 技术成果: - 项目完成率从65.0%提升至72.5% - 中优先级任务完成率达90% - 低优先级任务开始推进(18%) - 容器化部署体系完全就绪 - 用户文档体系建立完成 下一步: 继续推进容器化扩展和性能优化任务
187 lines
5.0 KiB
Makefile
187 lines
5.0 KiB
Makefile
# 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
|
||
|
||
# Docker 相关命令
|
||
docker-build: ## 构建Docker镜像
|
||
@echo "🐳 构建Docker镜像..."
|
||
docker build -t photography-frontend:latest .
|
||
|
||
docker-run: ## 运行Docker容器
|
||
@echo "🚀 运行Docker容器..."
|
||
docker run -d -p 3000:80 --name photography-frontend photography-frontend:latest
|
||
|
||
docker-stop: ## 停止Docker容器
|
||
@echo "⏹️ 停止Docker容器..."
|
||
docker stop photography-frontend || true
|
||
docker rm photography-frontend || true
|
||
|
||
docker-logs: ## 查看Docker日志
|
||
@echo "📋 查看Docker日志..."
|
||
docker logs -f photography-frontend
|
||
|
||
docker-dev: ## 启动Docker开发环境
|
||
@echo "🛠️ 启动Docker开发环境..."
|
||
docker-compose up -d
|
||
|
||
docker-dev-logs: ## 查看Docker开发环境日志
|
||
@echo "📋 查看Docker开发环境日志..."
|
||
docker-compose logs -f
|
||
|
||
docker-dev-stop: ## 停止Docker开发环境
|
||
@echo "⏹️ 停止Docker开发环境..."
|
||
docker-compose down
|
||
|
||
docker-clean: ## 清理Docker资源
|
||
@echo "🧹 清理Docker资源..."
|
||
docker system prune -f
|
||
|
||
# 生产环境Docker命令
|
||
docker-prod-build: ## 构建生产Docker镜像
|
||
@echo "🏭 构建生产Docker镜像..."
|
||
docker build -t photography-frontend:prod --target production .
|
||
|
||
docker-prod-deploy: ## 部署生产环境
|
||
@echo "🚀 部署生产环境..."
|
||
docker-compose -f docker-compose.yml --profile proxy up -d
|
||
|
||
docker-prod-logs: ## 查看生产环境日志
|
||
@echo "📋 查看生产环境日志..."
|
||
docker-compose -f docker-compose.yml logs -f
|
||
|
||
docker-prod-stop: ## 停止生产环境
|
||
@echo "⏹️ 停止生产环境..."
|
||
docker-compose -f docker-compose.yml down
|