79 lines
2.2 KiB
Bash
Executable File
79 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# ============================================================
|
||
# 统一构建脚本:在对应项目目录执行构建命令
|
||
# backend -> dashboard/backend pnpm build(tsc)
|
||
# frontend -> dashboard/frontend pnpm build(vite build --mode prod)
|
||
# www -> www pnpm generate(nuxt 静态生成)
|
||
#
|
||
# 不带参数时默认构建全部三个项目(顺序: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 build(tsc)
|
||
frontend, f dashboard/frontend pnpm build(vite build --mode prod)
|
||
www, w www pnpm generate(nuxt 静态生成)
|
||
|
||
不带参数时默认构建全部三个项目(顺序: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[*]}"
|