This commit is contained in:
vet
2026-04-20 23:40:03 +07:00
parent 4606ddacbd
commit 117949d932

View File

@@ -61,9 +61,9 @@ declare -A FE_CMD=(
[pc]="yarn dev:web"
[meetingh5]="npm run dev"
[h5]="npm run dev"
[cms]="pnpm run dev"
[build-cms]="pnpm run dev"
[build-down]="npm run dev"
[cms]="pnpm run dev -- --port 8001"
[build-cms]="pnpm run dev -- --port 8002"
[build-down]="npm run dev -- --port 8003"
)
# cms/build-cms/build-down 不配置端口时默认都是 8000需手动指定
@@ -72,8 +72,8 @@ declare -A FE_ENV=(
[meetingh5]=""
[h5]=""
[cms]="HOST=0.0.0.0 PORT=8001"
[build-cms]="PORT=8002"
[build-down]="PORT=8003"
[build-cms]="HOST=0.0.0.0 PORT=8002"
[build-down]="HOST=0.0.0.0 PORT=8003"
)
declare -A FE_PORT=(
@@ -119,6 +119,34 @@ _check_fe_port_free() {
fi
}
_wait_fe_port_listen() {
local name="$1"
local port="${FE_PORT_NUM[$name]}"
local i
for i in {1..10}; do
if lsof -tiTCP:"$port" -sTCP:LISTEN &>/dev/null; then
return 0
fi
sleep 1
done
error "$name 启动后未监听预期端口 $port"
return 1
}
_kill_tree() {
local pid="$1" signal="${2:-TERM}"
local children child
children=$(pgrep -P "$pid" 2>/dev/null || true)
for child in $children; do
_kill_tree "$child" "$signal"
done
kill "-$signal" "$pid" 2>/dev/null || true
}
# ── 启动单个前端服务 ──────────────────────────────────────────────────────────
_start_fe() {
local name="$1"
@@ -193,6 +221,18 @@ _start_fe() {
sleep 2
if [[ -f "$pidfile" ]] && kill -0 "$(cat "$pidfile")" 2>/dev/null; then
if ! _wait_fe_port_listen "$name"; then
local started_pid
started_pid="$(cat "$pidfile")"
warn "$name 未监听预期端口 $port,清理本次启动进程 (PID=$started_pid)"
_kill_tree "$started_pid" TERM
sleep 1
if kill -0 "$started_pid" 2>/dev/null; then
_kill_tree "$started_pid" KILL
fi
rm -f "$pidfile"
return 1
fi
success "$name (端口=$port, PID=$(cat "$pidfile")) ${FE_PORT[$name]}$logfile"
if [[ "$name" == "pc" ]]; then
pc_check_wasm_assets "${PC_BACKEND_ORIGIN}"