feat: setup frontend project with bun and dynamic data fetching
- Create new frontend project directory with Next.js 15 + React 19 - Migrate from pnpm to bun for faster package management - Add TanStack Query + Axios for dynamic data fetching - Create comprehensive Makefile with development commands - Setup API layer with query hooks and error handling - Configure environment variables and bun settings - Add TypeScript type checking and project documentation - Update CLAUDE.md with bun-specific development workflow
This commit is contained in:
136
frontend/Makefile
Normal file
136
frontend/Makefile
Normal file
@ -0,0 +1,136 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user