#!/bin/bash # ============================================================ # OpenHIS 前端部署脚本 # 用法: bash deploy-frontend.sh [prod|test|staging|dev] # 默认: prod # ============================================================ set -e MODE=${1:-prod} PROJECT_DIR=$(cd "$(dirname "$0")/.." && pwd) UI_DIR="$PROJECT_DIR/openhis-ui-vue3" DIST_DIR="$UI_DIR/dist" echo "==========================================" echo " OpenHIS 前端部署" echo " 环境: $MODE" echo " 目录: $UI_DIR" echo "==========================================" # ---------- 1. 环境检查 ---------- echo "" echo "[1/5] 环境检查..." check_cmd() { if ! command -v "$1" &> /dev/null; then echo "错误: 未找到 $1,请先安装" exit 1 fi } check_cmd node check_cmd npm NODE_VER=$(node -v | sed 's/v//' | cut -d. -f1) if [ "$NODE_VER" -lt 18 ]; then echo "错误: Node.js 版本需要 >= 18,当前: $(node -v)" exit 1 fi echo " Node.js: $(node -v) ✓" echo " npm: $(npm -v) ✓" # ---------- 2. 安装依赖 ---------- echo "" echo "[2/5] 安装依赖..." cd "$UI_DIR" # 清理旧的 node_modules(可选,取消注释启用) # echo " 清理旧依赖..." # rm -rf node_modules package-lock.json npm install --production=false --legacy-peer-deps echo " 依赖安装完成 ✓" # ---------- 3. 构建 ---------- echo "" echo "[3/5] 构建 ($MODE)..." npm run "build:$MODE" echo " 构建完成 ✓" # ---------- 4. 产物信息 ---------- echo "" echo "[4/5] 构建产物:" TOTAL_SIZE=$(du -sh "$DIST_DIR" 2>/dev/null | cut -f1) FILE_COUNT=$(find "$DIST_DIR" -type f | wc -l) echo " 路径: $DIST_DIR" echo " 大小: $TOTAL_SIZE" echo " 文件: $FILE_COUNT 个" # ---------- 5. 部署提示 ---------- echo "" echo "[5/5] 部署方式:" echo "" echo " 方式一: 复制到 Nginx" echo " cp -r $DIST_DIR/* /usr/share/nginx/html/openhis/" echo " nginx -s reload" echo "" echo " 方式二: 软链接(推荐,方便更新)" echo " ln -sfn $DIST_DIR /usr/share/nginx/html/openhis" echo " nginx -s reload" echo "" echo "==========================================" echo " 部署完成!" echo "=========================================="