优化dev.sh启动脚本,支持已安装的app启动后自动支持热重载

This commit is contained in:
jingrow 2025-10-29 20:17:23 +08:00
parent 6895bf380b
commit 232dd80671

38
dev.sh
View File

@ -90,6 +90,34 @@ check_deps() {
success "依赖检查完成"
}
# 构建热重载目录参数返回热重载参数日志输出到stderr
build_reload_dirs() {
local RELOAD_DIRS=""
local APPS_FILE="apps/apps.txt"
if [ ! -f "$APPS_FILE" ]; then
warn "未找到 $APPS_FILE,仅监听 jingrow 应用" >&2
[ -d "apps/jingrow" ] && RELOAD_DIRS="--reload-dir $(cd apps/jingrow && pwd)"
else
info "$APPS_FILE 读取应用列表..." >&2
while IFS= read -r app_name || [ -n "$app_name" ]; do
app_name=$(echo "$app_name" | sed 's/#.*$//' | xargs)
[ -z "$app_name" ] && continue
if [ -d "apps/$app_name" ]; then
RELOAD_DIRS="$RELOAD_DIRS --reload-dir $(cd "apps/$app_name" && pwd)"
info " 添加热重载: $app_name" >&2
else
warn " 应用目录不存在: apps/$app_name" >&2
fi
done < "$APPS_FILE"
[ -z "$RELOAD_DIRS" ] && warn "未找到任何应用目录,仅使用默认重载" >&2 || success "热重载目录配置完成" >&2
fi
echo "$RELOAD_DIRS"
}
# 启动所有服务
start_all() {
info "启动开发环境..."
@ -102,12 +130,15 @@ start_all() {
export $(grep -v '^#' .env | xargs)
fi
# 构建热重载目录参数
RELOAD_DIRS=$(build_reload_dirs)
info "启动所有服务..."
# 使用延迟启动让后端先启动3秒
npx concurrently \
--names "BACKEND,WORKER,FRONTEND" \
--prefix-colors "blue,yellow,green" \
"cd apps/jingrow && uvicorn jingrow.main:app --host 0.0.0.0 --port 9001 --reload" \
"cd apps/jingrow && uvicorn jingrow.main:app --host 0.0.0.0 --port 9001 --reload $RELOAD_DIRS" \
"cd apps/jingrow && dramatiq jingrow.services.queue --processes 1 --threads 1" \
"sleep 3 && cd apps/jingrow/frontend && npm run dev"
}
@ -131,10 +162,13 @@ start_backend() {
export $(grep -v '^#' .env | xargs)
fi
# 构建热重载目录参数
RELOAD_DIRS=$(build_reload_dirs)
npx concurrently \
--names "BACKEND,WORKER" \
--prefix-colors "blue,yellow" \
"cd apps/jingrow && uvicorn jingrow.main:app --host 0.0.0.0 --port 9001 --reload" \
"cd apps/jingrow && uvicorn jingrow.main:app --host 0.0.0.0 --port 9001 --reload $RELOAD_DIRS" \
"cd apps/jingrow && dramatiq jingrow.services.queue --processes 1 --threads 1"
}