web_label_build_zip.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/bin/bash
  2. # ============================================
  3. # 前端构建打包脚本 (Linux)
  4. # 用于开发环境构建前端并打包
  5. # ============================================
  6. set -e
  7. # [修改 2] 定义主目录变量,支持传入参数,默认为当前目录
  8. PROJECT_ROOT="/home/lq/lq_workspace/LQLabelServer/source/LabelingSystem"
  9. DEPLOY_TMP="/home/lq/lq_workspace/LQLabelServer/deploy_tmp"
  10. echo "============================================"
  11. echo " LQ Label 前端构建脚本"
  12. echo " 项目目录:$PROJECT_ROOT"
  13. echo "============================================"
  14. echo ""
  15. # [新增] 初始化 NVM 环境 (解决脚本中 nvm: command not found 问题)
  16. export NVM_DIR="$HOME/.nvm"
  17. if [ -s "$NVM_DIR/nvm.sh" ]; then
  18. \. "$NVM_DIR/nvm.sh"
  19. echo "[Env] NVM 已加载 (版本:$(nvm --version))"
  20. # [新增] 切换 Node 版本
  21. echo "[Env] 切换 Node 版本到 20.18.0..."
  22. nvm use 20.18.0
  23. node -v
  24. else
  25. echo "警告:未找到 NVM,将使用系统默认 Node 版本"
  26. fi
  27. # 进入项目主目录
  28. cd "$PROJECT_ROOT"
  29. # 检查是否在项目根目录
  30. if [ ! -f "web/package.json" ]; then
  31. echo "错误:请在项目根目录运行此脚本,或检查主目录配置"
  32. exit 1
  33. fi
  34. # 进入 web 目录
  35. cd web
  36. # 检查 node_modules
  37. if [ ! -d "node_modules" ]; then
  38. echo "安装依赖..."
  39. yarn install
  40. if [ $? -ne 0 ]; then
  41. echo "依赖安装失败"
  42. cd ..
  43. exit 1
  44. fi
  45. fi
  46. echo ""
  47. echo "[1/3] 构建前端项目..."
  48. yarn nx build lq_label --configuration=production
  49. if [ $? -ne 0 ]; then
  50. echo "构建失败"
  51. cd ..
  52. exit 1
  53. fi
  54. echo ""
  55. echo "[2/3] 打包 dist 目录..."
  56. # 回到根目录
  57. cd ..
  58. # [修改 1] 删除旧的 zip 包 (原为 tar.gz)
  59. if [ -f "lq_label_dist.zip" ]; then
  60. rm -f "lq_label_dist.zip"
  61. fi
  62. # 检查 zip 命令是否存在
  63. if ! command -v zip &> /dev/null; then
  64. echo "错误:zip 命令未找到,请安装 zip (sudo apt install zip)"
  65. exit 1
  66. fi
  67. # [修改 1] 使用 zip 打包 (原为 tar)
  68. # 进入 dist 目录进行打包,确保压缩包内根目录为 lq_label
  69. cd web/dist/apps
  70. zip -r ../../lq_label_dist.zip lq_label
  71. cd ../../
  72. if [ $? -ne 0 ]; then
  73. echo "打包失败"
  74. exit 1
  75. fi
  76. mv lq_label_dist.zip "$DEPLOY_TMP"
  77. echo ""
  78. echo "[3/3] 完成!"
  79. echo ""
  80. echo "============================================"
  81. echo " 构建产物:lq_label_dist.zip"
  82. echo " 可以提交到 Git 进行版本管理"
  83. echo "============================================"
  84. echo ""
  85. echo "下一步:"
  86. echo " 1. git add lq_label_dist.zip"
  87. echo " 2. git commit -m \"build: update frontend dist\""
  88. echo " 3. git push"
  89. echo " 4. 在服务器上运行 deploy.sh"
  90. echo ""