57 lines
1.8 KiB
Bash
Executable File
57 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
PORT="${ADM_PORT:-5174}"
|
|
API_PORT="${ADM_API_PORT:-8085}"
|
|
NODE_PATH="${LOCAL_NODE_PATH:-/opt/homebrew/opt/node@24/bin:/opt/homebrew/opt/node@22/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin}"
|
|
LOG="${ROOT}/adm-preview.log"
|
|
API_LOG="${ROOT}/adm-api.log"
|
|
PID_FILE="${ROOT}/.adm-preview.pid"
|
|
API_PID_FILE="${ROOT}/.adm-api.pid"
|
|
|
|
export PATH="${NODE_PATH}:${PATH}"
|
|
command -v node >/dev/null 2>&1 || { echo "❌ 未找到 node" >&2; exit 1; }
|
|
|
|
cd "${ROOT}"
|
|
|
|
if [[ ! -d node_modules ]]; then
|
|
echo "==> 安装依赖..."
|
|
npm install
|
|
fi
|
|
|
|
echo "==> 本机构建..."
|
|
npm run build
|
|
|
|
echo "==> 停止旧进程 (port ${PORT}, ${API_PORT})..."
|
|
lsof -ti "TCP:${PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill 2>/dev/null || true
|
|
lsof -ti "TCP:${API_PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill 2>/dev/null || true
|
|
sleep 1
|
|
lsof -ti "TCP:${PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill -9 2>/dev/null || true
|
|
lsof -ti "TCP:${API_PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill -9 2>/dev/null || true
|
|
rm -f "${PID_FILE}" "${API_PID_FILE}"
|
|
|
|
echo "==> 启动本机 Admin API @ 127.0.0.1:${API_PORT}..."
|
|
nohup node server/index.mjs >>"${API_LOG}" 2>&1 &
|
|
echo $! >"${API_PID_FILE}"
|
|
sleep 2
|
|
|
|
if ! curl -sf "http://127.0.0.1:${API_PORT}/health" >/dev/null; then
|
|
echo "❌ 本机 Admin API 启动失败,最近日志:" >&2
|
|
tail -n 60 "${API_LOG}" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "==> 启动本机 vite preview @ 127.0.0.1:${PORT}..."
|
|
nohup npm run dev:preview -- --host 127.0.0.1 --port "${PORT}" >>"${LOG}" 2>&1 &
|
|
echo $! >"${PID_FILE}"
|
|
sleep 2
|
|
|
|
if ! curl -sf "http://127.0.0.1:${PORT}/" >/dev/null; then
|
|
echo "❌ 本机 preview 启动失败,最近日志:" >&2
|
|
tail -n 60 "${LOG}" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ local_restart 完成: http://127.0.0.1:${PORT}/"
|