init
This commit is contained in:
54
stop-frontend.sh
Executable file
54
stop-frontend.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# stop-frontend.sh — 停止前端开发服务器
|
||||
#
|
||||
# 用法:
|
||||
# ./stop-frontend.sh # 停止全部前端服务
|
||||
# ./stop-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 # ← 脚本执行日志
|
||||
|
||||
FE_PROJECTS=(pc meetingh5 h5 cms build-cms build-down)
|
||||
TARGET="${1:-all}"
|
||||
|
||||
_stop_fe() {
|
||||
local name="$1" pidfile="$PID_DIR/fe-${name}.pid"
|
||||
if [[ -f "$pidfile" ]]; then
|
||||
local pid; pid=$(cat "$pidfile")
|
||||
if kill -0 "$pid" 2>/dev/null; then
|
||||
# 杀掉整个进程组(覆盖 npm/pnpm/yarn 子进程)
|
||||
kill -- -"$(ps -o pgid= -p "$pid" 2>/dev/null | tr -d ' ')" 2>/dev/null || kill "$pid" 2>/dev/null || true
|
||||
success "$name 已停止 (PID=$pid)"
|
||||
else
|
||||
warn "$name 进程不存在(可能已退出)"
|
||||
fi
|
||||
rm -f "$pidfile"
|
||||
else
|
||||
warn "$name 没有 PID 记录(未运行)"
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$TARGET" == "all" ]]; then
|
||||
step "停止全部前端开发服务器"
|
||||
for proj in "${FE_PROJECTS[@]}"; do
|
||||
_stop_fe "$proj"
|
||||
done
|
||||
success "所有前端服务已停止"
|
||||
else
|
||||
local_valid=false
|
||||
for p in "${FE_PROJECTS[@]}"; do
|
||||
[[ "$p" == "$TARGET" ]] && local_valid=true && break
|
||||
done
|
||||
if ! $local_valid; then
|
||||
error "未知项目: $TARGET"
|
||||
echo "可用: ${FE_PROJECTS[*]}"
|
||||
exit 1
|
||||
fi
|
||||
step "停止: $TARGET"
|
||||
_stop_fe "$TARGET"
|
||||
fi
|
||||
Reference in New Issue
Block a user