generate_frontend_sourcecode.sh 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/bash
  2. # 前端源代码拼接脚本 (Shell版本)
  3. # 将 output_sourcecode/front/ 目录下所有HTML文件内容拼接生成统一的前端源代码文档
  4. #
  5. # CSS处理策略:
  6. # - 彻底移除 <style> 标签及其内容
  7. # - 移除 CSS 外部链接 (rel="stylesheet")
  8. # - 移除内联样式属性 (style="...")
  9. # - 保留HTML结构和JavaScript逻辑
  10. # - 保留class属性(可能对JavaScript功能重要)
  11. #
  12. # 这样可以显著减少文档长度,突出核心程序逻辑,更适合软著申请材料要求
  13. # 设置脚本目录
  14. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" # 回到项目根目录
  15. FRONT_DIR="${SCRIPT_DIR}/output_sourcecode/front"
  16. OUTPUT_DIR="${SCRIPT_DIR}/output_docs"
  17. OUTPUT_FILE="${OUTPUT_DIR}/前端源代码.txt"
  18. # 确保输出目录存在
  19. mkdir -p "${OUTPUT_DIR}"
  20. # 检查前端目录是否存在
  21. if [ ! -d "${FRONT_DIR}" ]; then
  22. echo "❌ 错误:前端目录不存在 ${FRONT_DIR}"
  23. exit 1
  24. fi
  25. # 获取HTML文件列表
  26. HTML_FILES=($(find "${FRONT_DIR}" -name "*.html" -type f | sort))
  27. if [ ${#HTML_FILES[@]} -eq 0 ]; then
  28. echo "❌ 错误:在 ${FRONT_DIR} 目录下没有找到HTML文件"
  29. exit 1
  30. fi
  31. echo "============================================================"
  32. echo "前端源代码拼接脚本"
  33. echo "============================================================"
  34. echo "找到 ${#HTML_FILES[@]} 个HTML文件:"
  35. for file in "${HTML_FILES[@]}"; do
  36. echo " - $(basename "$file")"
  37. done
  38. echo ""
  39. echo "开始生成前端源代码文档..."
  40. # 定义页面映射函数
  41. get_page_title() {
  42. local filename=$(basename "$1")
  43. case "$filename" in
  44. "login.html") echo "登录页面" ;;
  45. "dashboard.html") echo "仪表盘页面" ;;
  46. "materials.html") echo "素材库管理页面" ;;
  47. "ai-assistant.html") echo "AI智能助手页面" ;;
  48. "users.html") echo "用户权限管理页面" ;;
  49. "analytics.html") echo "数据统计分析页面" ;;
  50. "wechat-config.html") echo "企业微信集成配置页面" ;;
  51. "settings.html") echo "系统设置页面" ;;
  52. *) echo "${filename%.html}页面" ;;
  53. esac
  54. }
  55. # 清空输出文件
  56. > "${OUTPUT_FILE}"
  57. # 处理每个HTML文件
  58. counter=1
  59. for html_file in "${HTML_FILES[@]}"; do
  60. filename=$(basename "$html_file")
  61. page_title=$(get_page_title "$html_file")
  62. echo "处理文件 ${counter}/${#HTML_FILES[@]}: ${filename}"
  63. # 写入文件分隔标识和源代码
  64. echo "=== ${filename} ===" >> "${OUTPUT_FILE}"
  65. # 读取HTML内容并彻底移除CSS样式内容,保留HTML结构和JavaScript
  66. if [ -f "$html_file" ]; then
  67. # 创建临时文件进行多步处理
  68. temp_file=$(mktemp)
  69. # 1. 移除<style>标签及其内容
  70. sed 's/<style[^>]*>.*<\/style>/ <!-- CSS样式已省略,完整CSS请查看原始HTML文件 -->/g' "$html_file" > "$temp_file"
  71. # 2. 移除CSS外部链接
  72. sed -i.bak 's/<link[^>]*rel=["\x27]stylesheet["\x27][^>]*>/ <!-- CSS外部链接已省略 -->/gi' "$temp_file"
  73. # 3. 移除内联样式属性
  74. sed -i.bak 's/ style=["\x27][^"\x27]*["\x27]//g' "$temp_file"
  75. # 输出处理后的内容
  76. cat "$temp_file" >> "${OUTPUT_FILE}"
  77. # 清理临时文件
  78. rm -f "$temp_file" "$temp_file.bak"
  79. else
  80. echo "错误:无法读取文件 ${html_file}" >> "${OUTPUT_FILE}"
  81. fi
  82. echo "" >> "${OUTPUT_FILE}"
  83. echo "" >> "${OUTPUT_FILE}"
  84. ((counter++))
  85. done
  86. # 不添加额外说明,只保留纯源代码
  87. echo "✅ 前端源代码文档生成完成!"
  88. echo "📁 输出文件: ${OUTPUT_FILE}"
  89. # 显示文件大小
  90. if [ -f "${OUTPUT_FILE}" ]; then
  91. file_size=$(stat -f%z "${OUTPUT_FILE}" 2>/dev/null || stat -c%s "${OUTPUT_FILE}" 2>/dev/null)
  92. if [ $? -eq 0 ]; then
  93. if [ $file_size -gt 1048576 ]; then
  94. size_str="$(echo "scale=2; $file_size / 1048576" | bc) MB"
  95. elif [ $file_size -gt 1024 ]; then
  96. size_str="$(echo "scale=2; $file_size / 1024" | bc) KB"
  97. else
  98. size_str="${file_size} bytes"
  99. fi
  100. echo "📊 文件大小: ${size_str}"
  101. fi
  102. fi
  103. echo ""
  104. echo "============================================================"
  105. echo "脚本执行完成"
  106. echo "============================================================"