From 232dd80671b72c33c0a72dedad25b4d2764f0588 Mon Sep 17 00:00:00 2001 From: jingrow Date: Wed, 29 Oct 2025 20:17:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96dev.sh=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=EF=BC=8C=E6=94=AF=E6=8C=81=E5=B7=B2=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E7=9A=84app=E5=90=AF=E5=8A=A8=E5=90=8E=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=94=AF=E6=8C=81=E7=83=AD=E9=87=8D=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev.sh | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/dev.sh b/dev.sh index 8c390cc..8ad0e22 100755 --- a/dev.sh +++ b/dev.sh @@ -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" }