Files
2026-08-14 11:26:20 +08:00

79 lines
2.2 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
# ============================================================
# 统一构建脚本:在对应项目目录执行构建命令
# backend -> dashboard/backend pnpm buildtsc
# frontend -> dashboard/frontend pnpm buildvite build --mode prod
# www -> www pnpm generatenuxt 静态生成)
#
# 不带参数时默认构建全部三个项目(顺序:backend -> frontend -> www
#
# 用法:./deploy/build.sh [项目...]
# ============================================================
set -euo pipefail
# 仓库根目录 = 本脚本所在目录的上一级
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
usage() {
cat <<EOF
用法: $(basename "$0") [项目...]
可构建项目:
backend, b dashboard/backend pnpm buildtsc
frontend, f dashboard/frontend pnpm buildvite build --mode prod
www, w www pnpm generatenuxt 静态生成)
不带参数时默认构建全部三个项目(顺序:backend -> frontend -> www)。
示例:
$(basename "$0") backend 仅构建后端
$(basename "$0") frontend www 构建前端与 www
$(basename "$0") 构建全部
EOF
}
declare -a TARGETS=()
add_target() {
local t="$1"
# 去重
for existing in "${TARGETS[@]:-}"; do
[[ "$existing" == "$t" ]] && return
done
TARGETS+=("$t")
}
for arg in "$@"; do
case "$arg" in
-h|--help) usage; exit 0 ;;
backend|b) add_target backend ;;
frontend|f) add_target frontend ;;
www|w) add_target www ;;
*) echo "错误: 未知项目「${arg}」" >&2; usage; exit 1 ;;
esac
done
# 默认构建全部
if [[ ${#TARGETS[@]} -eq 0 ]]; then
TARGETS=(backend frontend www)
fi
run_build() {
local name="$1" dir="$2" cmd="$3"
echo ""
echo "==> [$name] 在 $dir 执行: $cmd"
(cd "$ROOT/$dir" && $cmd)
echo "==> [$name] 构建完成"
}
for t in "${TARGETS[@]}"; do
case "$t" in
backend) run_build backend dashboard/backend "pnpm build" ;;
frontend) run_build frontend dashboard/frontend "pnpm build" ;;
www) run_build www www "pnpm generate" ;;
esac
done
echo ""
echo "全部构建完成: ${TARGETS[*]}"