Ctrl K
ComunidadGuías…

build-frontend.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/bin/bash

# XBoard 前端构建脚本
# 用于单独构建前端资源

set -e

GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m'

log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_success() { echo -e "${BLUE}[SUCCESS]${NC} $1"; }

WEB_DIR="${1:-web}"

if [ ! -d "$WEB_DIR" ]; then
    log_error "前端目录不存在: $WEB_DIR"
    exit 1
fi

log_info "开始构建前端..."
cd "$WEB_DIR"

# 检查 Node.js
if ! command -v node &>/dev/null; then
    log_error "Node.js 未安装"
    log_info "请先安装 Node.js: https://nodejs.org/"
    exit 1
fi

log_info "Node.js 版本: $(node -v)"
log_info "npm 版本: $(npm -v)"

# 检查 package.json
if [ ! -f "package.json" ]; then
    log_error "未找到 package.json"
    exit 1
fi

# 清理旧的构建
if [ -d "dist" ]; then
    log_info "清理旧的构建产物..."
    rm -rf dist
fi

if [ -d "node_modules" ]; then
    log_warn "node_modules 已存在"
    read -p "是否重新安装依赖? [y/N]: " reinstall
    if [ "$reinstall" = "y" ] || [ "$reinstall" = "Y" ]; then
        log_info "删除 node_modules..."
        rm -rf node_modules
    fi
fi

# 安装依赖
if [ ! -d "node_modules" ]; then
    log_info "安装依赖 (这可能需要几分钟)..."
    
    # 检测包管理器
    if command -v pnpm &>/dev/null; then
        log_info "使用 pnpm..."
        pnpm install
    elif command -v yarn &>/dev/null; then
        log_info "使用 yarn..."
        yarn install
    else
        log_info "使用 npm..."
        npm install --legacy-peer-deps
    fi
    
    if [ $? -ne 0 ]; then
        log_error "依赖安装失败"
        exit 1
    fi
    log_success "依赖安装完成"
else
    log_info "依赖已安装,跳过"
fi

# 构建
log_info "开始构建..."
echo ""

if npm run build; then
    echo ""
    log_success "构建完成!"
    
    if [ -d "dist" ]; then
        log_info "构建产物: $(pwd)/dist"
        log_info "文件大小:"
        du -sh dist
        echo ""
        log_info "文件列表:"
        ls -lh dist/
    else
        log_warn "未找到 dist 目录"
    fi
else
    echo ""
    log_error "构建失败"
    exit 1
fi

echo ""
log_info "提示:"
echo "  - 如果使用 Docker,请重启容器: docker compose restart xboard"
echo "  - 如果直接运行,前端资源已更新"
echo ""