feat: 重构项目为模块化结构,拆分 CLAUDE.md 文档
All checks were successful
Deploy Frontend / deploy (push) Successful in 2m38s

## 📁 模块化重构

### 新增模块 CLAUDE.md
- `frontend/CLAUDE.md` - 前端开发指导 (Next.js, React, TypeScript)
- `docs/deployment/CLAUDE.md` - 部署配置指导 (Caddy, 服务器配置)
- `.gitea/workflows/CLAUDE.md` - CI/CD 流程指导 (Gitea Actions)

### 根目录 CLAUDE.md 优化
- 重构为项目概览和模块导航
- 提供模块选择指导
- 减少单个文件的上下文长度

### 自动化机制
- 创建 `scripts/update-claude-docs.sh` 自动更新脚本
- 集成到 pre-commit hooks 中
- 文件变更时自动更新对应模块的 CLAUDE.md

## 🎯 优化效果

### 上下文优化
- 每个模块独立的 CLAUDE.md 文件
- 大幅减少单次处理的上下文长度
- 提高 Claude 处理效率和准确性

### 开发体验
- 根据工作内容选择对应模块
- 模块化的文档更聚焦和专业
- 自动维护文档时间戳

### 项目结构
```
photography/
├── CLAUDE.md                    # 项目概览和模块导航
├── frontend/CLAUDE.md          # 前端开发指导
├── docs/deployment/CLAUDE.md   # 部署配置指导
├── .gitea/workflows/CLAUDE.md  # CI/CD 流程指导
└── scripts/update-claude-docs.sh # 自动更新脚本
```

现在 Claude 工作时只需关注单个模块的文档,大幅提升处理效率!
This commit is contained in:
xujiang
2025-07-09 10:54:08 +08:00
parent 87c34179fa
commit 9e381c783d
11 changed files with 1122 additions and 222 deletions

67
scripts/README.md Normal file
View File

@ -0,0 +1,67 @@
# 项目脚本
本目录包含项目维护和自动化脚本。
## 脚本说明
### update-claude-docs.sh
**用途**: 自动更新各模块的 CLAUDE.md 文档时间戳
**功能**:
- 检测项目文件变更
- 自动更新相关模块的 CLAUDE.md 最后更新时间
- 验证所有 CLAUDE.md 文件完整性
**使用方法**:
```bash
# 手动运行
./scripts/update-claude-docs.sh
# 自动运行 (通过 pre-commit hooks)
git commit -m "update: 修改前端组件" # 自动触发
```
**触发条件**:
- `frontend/` 目录变更 → 更新 `frontend/CLAUDE.md`
- `docs/deployment/` 目录变更 → 更新 `docs/deployment/CLAUDE.md`
- `.gitea/workflows/` 目录变更 → 更新 `.gitea/workflows/CLAUDE.md`
- `CLAUDE.md` 变更 → 更新根目录时间戳
## 自动化集成
### Pre-commit Hooks
脚本已集成到 pre-commit hooks 中,会在以下情况自动运行:
- 提交涉及模块文件变更时
- 自动更新时间戳并包含在本次提交中
### 配置文件
- **lint-staged.config.js** - 配置自动触发规则
- **package.json** - 项目脚本配置
## 最佳实践
### 开发流程
1. 正常开发和修改文件
2. 使用 `git add` 添加变更
3. 使用 `git commit` 提交(自动触发脚本)
4. 脚本自动更新相关 CLAUDE.md 文档
5. 时间戳更新会包含在提交中
### 手动维护
如果需要手动更新文档:
```bash
# 运行脚本
./scripts/update-claude-docs.sh
# 提交更新
git add .
git commit -m "docs: 更新 CLAUDE.md 文档"
```
## 扩展计划
### 未来功能
- 自动生成模块依赖图
- 检查 CLAUDE.md 文档格式
- 自动同步配置变更
- 生成变更日志

151
scripts/update-claude-docs.sh Executable file
View File

@ -0,0 +1,151 @@
#!/bin/bash
# 自动更新 CLAUDE.md 文档脚本
# 当项目结构发生变化时,自动同步更新相关模块的 CLAUDE.md
set -e
echo "📝 开始更新 CLAUDE.md 文档..."
# 定义颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 检查是否在项目根目录
if [ ! -f "CLAUDE.md" ]; then
echo -e "${RED}❌ 请在项目根目录运行此脚本${NC}"
exit 1
fi
# 获取当前日期
CURRENT_DATE=$(date +"%Y-%m-%d %H:%M:%S")
# 更新根目录 CLAUDE.md 的最后更新时间
update_root_claude_md() {
echo -e "${YELLOW}📋 更新根目录 CLAUDE.md...${NC}"
# 在文件末尾添加更新时间(如果不存在)
if ! grep -q "最后更新时间" CLAUDE.md; then
echo "" >> CLAUDE.md
echo "---" >> CLAUDE.md
echo "**最后更新时间**: $CURRENT_DATE" >> CLAUDE.md
else
# 更新现有的时间戳
sed -i.bak "s/\*\*最后更新时间\*\*:.*/\*\*最后更新时间\*\*: $CURRENT_DATE/" CLAUDE.md
rm CLAUDE.md.bak
fi
}
# 检查前端模块变更
check_frontend_changes() {
echo -e "${YELLOW}🎨 检查前端模块变更...${NC}"
# 检查前端相关文件是否变更
if git diff --name-only HEAD~1 2>/dev/null | grep -E "^frontend/" > /dev/null; then
echo -e "${GREEN}✅ 检测到前端模块变更${NC}"
# 更新前端 CLAUDE.md 的时间戳
if [ -f "frontend/CLAUDE.md" ]; then
if ! grep -q "最后更新时间" frontend/CLAUDE.md; then
echo "" >> frontend/CLAUDE.md
echo "---" >> frontend/CLAUDE.md
echo "**最后更新时间**: $CURRENT_DATE" >> frontend/CLAUDE.md
else
sed -i.bak "s/\*\*最后更新时间\*\*:.*/\*\*最后更新时间\*\*: $CURRENT_DATE/" frontend/CLAUDE.md
rm frontend/CLAUDE.md.bak
fi
fi
fi
}
# 检查部署模块变更
check_deployment_changes() {
echo -e "${YELLOW}🚀 检查部署模块变更...${NC}"
# 检查部署相关文件是否变更
if git diff --name-only HEAD~1 2>/dev/null | grep -E "^docs/deployment/|^\.gitea/workflows/" > /dev/null; then
echo -e "${GREEN}✅ 检测到部署模块变更${NC}"
# 更新部署 CLAUDE.md 的时间戳
if [ -f "docs/deployment/CLAUDE.md" ]; then
if ! grep -q "最后更新时间" docs/deployment/CLAUDE.md; then
echo "" >> docs/deployment/CLAUDE.md
echo "---" >> docs/deployment/CLAUDE.md
echo "**最后更新时间**: $CURRENT_DATE" >> docs/deployment/CLAUDE.md
else
sed -i.bak "s/\*\*最后更新时间\*\*:.*/\*\*最后更新时间\*\*: $CURRENT_DATE/" docs/deployment/CLAUDE.md
rm docs/deployment/CLAUDE.md.bak
fi
fi
fi
}
# 检查 CI/CD 模块变更
check_cicd_changes() {
echo -e "${YELLOW}⚙️ 检查 CI/CD 模块变更...${NC}"
# 检查 CI/CD 相关文件是否变更
if git diff --name-only HEAD~1 2>/dev/null | grep -E "^\.gitea/workflows/" > /dev/null; then
echo -e "${GREEN}✅ 检测到 CI/CD 模块变更${NC}"
# 更新 CI/CD CLAUDE.md 的时间戳
if [ -f ".gitea/workflows/CLAUDE.md" ]; then
if ! grep -q "最后更新时间" .gitea/workflows/CLAUDE.md; then
echo "" >> .gitea/workflows/CLAUDE.md
echo "---" >> .gitea/workflows/CLAUDE.md
echo "**最后更新时间**: $CURRENT_DATE" >> .gitea/workflows/CLAUDE.md
else
sed -i.bak "s/\*\*最后更新时间\*\*:.*/\*\*最后更新时间\*\*: $CURRENT_DATE/" .gitea/workflows/CLAUDE.md
rm .gitea/workflows/CLAUDE.md.bak
fi
fi
fi
}
# 验证所有 CLAUDE.md 文件存在
validate_claude_files() {
echo -e "${YELLOW}🔍 验证 CLAUDE.md 文件...${NC}"
local files=(
"CLAUDE.md"
"frontend/CLAUDE.md"
"docs/deployment/CLAUDE.md"
".gitea/workflows/CLAUDE.md"
)
for file in "${files[@]}"; do
if [ -f "$file" ]; then
echo -e "${GREEN}$file 存在${NC}"
else
echo -e "${RED}$file 不存在${NC}"
fi
done
}
# 主函数
main() {
echo -e "${GREEN}🚀 CLAUDE.md 文档更新工具${NC}"
echo "================================================"
# 验证文件
validate_claude_files
# 更新根目录
update_root_claude_md
# 检查各模块变更
check_frontend_changes
check_deployment_changes
check_cicd_changes
echo "================================================"
echo -e "${GREEN}✅ CLAUDE.md 文档更新完成!${NC}"
echo -e "${YELLOW}💡 提示: 记得提交更新的文档${NC}"
}
# 如果是通过命令行直接运行
if [ "${BASH_SOURCE[0]}" == "${0}" ]; then
main "$@"
fi