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 工作时只需关注单个模块的文档,大幅提升处理效率!
151 lines
4.9 KiB
Bash
Executable File
151 lines
4.9 KiB
Bash
Executable File
#!/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 |