Files
deploy-test/06-install-frontend.sh
2026-04-13 01:27:34 +07:00

96 lines
3.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# =============================================================================
# 06-install-frontend.sh — 安装前端项目依赖
#
# 首次使用或依赖变更后运行(对应后端的 04-build.sh
#
# 用法:
# ./06-install-frontend.sh # 安装全部前端项目依赖
# ./06-install-frontend.sh <project> # 只安装指定项目
#
# 可用项目: pc, meetingh5, h5, cms, build-cms, build-down
# =============================================================================
set -euo pipefail
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh"
init_dirs
init_script_log # ← 脚本执行日志
header "前端依赖安装"
# ── 工具检查 ──────────────────────────────────────────────────────────────────
_check_pm() {
local pm="$1"
if ! command -v "$pm" &>/dev/null; then
error "$pm 未安装"
case "$pm" in
yarn) echo " → npm install -g yarn" ;;
pnpm) echo " → npm install -g pnpm" ;;
npm) echo " → https://nodejs.org/" ;;
esac
return 1
fi
return 0
}
# ── 安装单个项目 ──────────────────────────────────────────────────────────────
# 用法: _install <显示名> <目录> <包管理器>
_install() {
local name="$1" dir="$ROOT_DIR/$2" pm="$3"
if [[ ! -d "$dir" ]]; then
warn " 目录不存在,跳过: $dir"
return 0
fi
_check_pm "$pm" || return 1
local logfile="$LOG_DIR/install-${name}.log"
info "安装 ${BOLD}$name${NC} 依赖 ($pm install) ..."
if [[ -d "$dir/node_modules" ]]; then
warn " node_modules 已存在,执行增量安装(如需全量重装请先 rm -rf $dir/node_modules"
fi
local start_ts=$SECONDS
(cd "$dir" && "$pm" install 2>&1) | tee -a "$logfile" | tail -5
local elapsed=$(( SECONDS - start_ts ))
success "$name 安装完成 (${elapsed}s) → 日志: $logfile"
}
# ── 项目列表 ──────────────────────────────────────────────────────────────────
TARGET="${1:-all}"
case "$TARGET" in
all)
step "安装全部前端项目依赖(共 6 个)"
_install "pc" "pc" "yarn"
_install "meetingh5" "meetingh5" "npm"
_install "h5" "h5" "npm"
_install "cms" "cms" "pnpm"
_install "build-cms" "build-cms" "pnpm"
_install "build-down" "build-down" "npm"
echo ""
success "所有前端依赖安装完成!"
echo ""
echo -e "${BOLD}下一步:${NC}"
echo -e " 启动前端开发服务器:"
echo -e " ${CYAN}./deploy-test/07-start-frontend.sh${NC}"
;;
pc|meetingh5|h5|cms|build-cms|build-down)
local PM
case "$TARGET" in
pc) PM="yarn" ;;
cms|build-cms) PM="pnpm" ;;
*) PM="npm" ;;
esac
step "安装 $TARGET 依赖"
_install "$TARGET" "$TARGET" "$PM"
;;
*)
error "未知项目: $TARGET"
echo "可用: pc, meetingh5, h5, cms, build-cms, build-down"
exit 1
;;
esac