支持 meilisearch 管理
This commit is contained in:
Executable
+78
@@ -0,0 +1,78 @@
|
||||
#!/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[*]}"
|
||||
Reference in New Issue
Block a user