#!/bin/bash # ============================================ # 前端构建打包脚本 (Linux) # 用于开发环境构建前端并打包 # ============================================ set -e # [修改 2] 定义主目录变量,支持传入参数,默认为当前目录 PROJECT_ROOT="/home/lq/lq_workspace/LQLabelServer/source/LabelingSystem" DEPLOY_TMP="/home/lq/lq_workspace/LQLabelServer/deploy_tmp" echo "============================================" echo " LQ Label 前端构建脚本" echo " 项目目录:$PROJECT_ROOT" echo "============================================" echo "" # [新增] 初始化 NVM 环境 (解决脚本中 nvm: command not found 问题) export NVM_DIR="$HOME/.nvm" if [ -s "$NVM_DIR/nvm.sh" ]; then \. "$NVM_DIR/nvm.sh" echo "[Env] NVM 已加载 (版本:$(nvm --version))" # [新增] 切换 Node 版本 echo "[Env] 切换 Node 版本到 20.18.0..." nvm use 20.18.0 node -v else echo "警告:未找到 NVM,将使用系统默认 Node 版本" fi # 进入项目主目录 cd "$PROJECT_ROOT" # 检查是否在项目根目录 if [ ! -f "web/package.json" ]; then echo "错误:请在项目根目录运行此脚本,或检查主目录配置" exit 1 fi # 进入 web 目录 cd web # 检查 node_modules if [ ! -d "node_modules" ]; then echo "安装依赖..." yarn install if [ $? -ne 0 ]; then echo "依赖安装失败" cd .. exit 1 fi fi echo "" echo "[1/3] 构建前端项目..." yarn nx build lq_label --configuration=production if [ $? -ne 0 ]; then echo "构建失败" cd .. exit 1 fi echo "" echo "[2/3] 打包 dist 目录..." # 回到根目录 cd .. # [修改 1] 删除旧的 zip 包 (原为 tar.gz) if [ -f "lq_label_dist.zip" ]; then rm -f "lq_label_dist.zip" fi # 检查 zip 命令是否存在 if ! command -v zip &> /dev/null; then echo "错误:zip 命令未找到,请安装 zip (sudo apt install zip)" exit 1 fi # [修改 1] 使用 zip 打包 (原为 tar) # 进入 dist 目录进行打包,确保压缩包内根目录为 lq_label cd web/dist/apps zip -r ../../lq_label_dist.zip lq_label cd ../../ if [ $? -ne 0 ]; then echo "打包失败" exit 1 fi mv lq_label_dist.zip "$DEPLOY_TMP" echo "" echo "[3/3] 完成!" echo "" echo "============================================" echo " 构建产物:lq_label_dist.zip" echo " 可以提交到 Git 进行版本管理" echo "============================================" echo "" echo "下一步:" echo " 1. git add lq_label_dist.zip" echo " 2. git commit -m \"build: update frontend dist\"" echo " 3. git push" echo " 4. 在服务器上运行 deploy.sh" echo ""