46 lines
1.1 KiB
Bash
46 lines
1.1 KiB
Bash
#!/bin/bash
|
||
# 神射手 - 智能启动脚本(端口冲突检查 + 指定端口)
|
||
# 端口: 3117(见 端口登记.md)
|
||
# 用法: ./scripts/start.sh [--kill] # --kill 自动终止占用进程
|
||
|
||
set -e
|
||
cd "$(dirname "$0")/.."
|
||
PORT=3117
|
||
AUTO_KILL=false
|
||
[[ "$1" == "--kill" ]] && AUTO_KILL=true
|
||
|
||
# 检查端口是否被占用
|
||
check_port() {
|
||
if lsof -i :$PORT >/dev/null 2>&1; then
|
||
echo "⚠️ 端口 $PORT 已被占用:"
|
||
lsof -i :$PORT
|
||
echo ""
|
||
if $AUTO_KILL; then
|
||
echo "正在终止占用进程..."
|
||
lsof -ti :$PORT | xargs kill -9 2>/dev/null || true
|
||
sleep 2
|
||
else
|
||
echo "解决方式:"
|
||
echo " 1) 运行 ./scripts/start.sh --kill 自动终止后启动"
|
||
echo " 2) 或手动执行: lsof -ti :$PORT | xargs kill -9"
|
||
exit 1
|
||
fi
|
||
fi
|
||
}
|
||
|
||
echo "=== 神射手 启动 ==="
|
||
echo "端口: $PORT | 访问: http://localhost:$PORT"
|
||
echo ""
|
||
|
||
check_port
|
||
|
||
# 优先 pnpm,其次 npm
|
||
if command -v pnpm &>/dev/null; then
|
||
pnpm dev
|
||
elif command -v npm &>/dev/null; then
|
||
npm run dev
|
||
else
|
||
echo "❌ 未找到 pnpm 或 npm"
|
||
exit 1
|
||
fi
|