run.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/bash
  2. # 配置
  3. SOURCE_DIR="dist-prod" # 打包生成的源文件夹
  4. ZIP_NAME="dc.ifoodme.com.zip" # 输出的 ZIP 文件名
  5. TEMP_DIR="/tmp/dc.ifoodme.com" # 临时目录,用于构建目标结构
  6. TARGET_DIR="dc.ifoodme.com" # ZIP 中的目标目录名
  7. BUILD_CMD="pnpm run build:prod" # 打包命令
  8. # 颜色输出
  9. RED='\033[0;31m'
  10. GREEN='\033[0;32m'
  11. NC='\033[0m' # No Color
  12. # 检查命令是否存在
  13. command_exists() {
  14. command -v "$1" >/dev/null 2>&1
  15. }
  16. # 检查依赖
  17. check_dependencies() {
  18. for cmd in pnpm zip unzip; do
  19. if ! command_exists "$cmd"; then
  20. echo -e "${RED}错误:需要安装 $cmd${NC}"
  21. exit 1
  22. fi
  23. done
  24. }
  25. # 执行打包
  26. run_build() {
  27. echo "开始执行打包: $BUILD_CMD..."
  28. if ! $BUILD_CMD; then
  29. echo -e "${RED}打包失败${NC}"
  30. exit 1
  31. fi
  32. echo -e "${GREEN}打包完成${NC}"
  33. }
  34. # 检查源文件夹
  35. check_source() {
  36. if [ ! -d "$SOURCE_DIR" ]; then
  37. echo -e "${RED}错误:源文件夹 $SOURCE_DIR 不存在${NC}"
  38. exit 1
  39. fi
  40. if [ ! -f "$SOURCE_DIR/index.html" ]; then
  41. echo -e "${RED}错误:$SOURCE_DIR 中没有 index.html 文件${NC}"
  42. exit 1
  43. fi
  44. }
  45. # 打包 ZIP
  46. create_zip() {
  47. echo "开始打包 ZIP..."
  48. # 创建临时目录并复制文件
  49. mkdir -p "$TEMP_DIR"
  50. cp -r "$SOURCE_DIR"/* "$TEMP_DIR"
  51. # 重命名临时目录为目标目录名
  52. mv "$TEMP_DIR" "$TARGET_DIR"
  53. # 打包为 ZIP
  54. zip -r "$ZIP_NAME" "$TARGET_DIR" >/dev/null
  55. if [ $? -eq 0 ]; then
  56. echo -e "${GREEN}打包成功:$ZIP_NAME${NC}"
  57. else
  58. echo -e "${RED}打包失败${NC}"
  59. exit 1
  60. fi
  61. }
  62. # 测试解压(可选)
  63. test_unzip() {
  64. echo "测试解压..."
  65. mkdir -p test_unzip
  66. unzip -o "$ZIP_NAME" -d test_unzip >/dev/null
  67. if [ -f "test_unzip/$TARGET_DIR/index.html" ]; then
  68. echo -e "${GREEN}解压测试成功:test_unzip/$TARGET_DIR/index.html 存在${NC}"
  69. else
  70. echo -e "${RED}解压测试失败:未生成正确的目录结构${NC}"
  71. exit 1
  72. fi
  73. }
  74. # 清理
  75. cleanup() {
  76. echo "清理临时文件..."
  77. rm -rf "$TARGET_DIR" test_unzip
  78. echo -e "${GREEN}清理完成${NC}"
  79. }
  80. # 主函数
  81. main() {
  82. check_dependencies
  83. run_build
  84. check_source
  85. create_zip
  86. cleanup
  87. echo -e "${GREEN}所有任务完成!${NC}"
  88. }
  89. # 执行
  90. main