resolve path issues and eliminate code duplication
This commit is contained in:
parent
9e2461af1a
commit
e5629922e2
49
dev.sh
49
dev.sh
@ -3,6 +3,14 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 获取脚本所在目录(项目根目录)
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
cd "$SCRIPT_DIR" || exit 1
|
||||||
|
|
||||||
|
# 项目路径常量
|
||||||
|
JINGROW_APP_DIR="apps/jingrow"
|
||||||
|
FRONTEND_DIR="$JINGROW_APP_DIR/frontend"
|
||||||
|
|
||||||
# 颜色定义
|
# 颜色定义
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
@ -103,6 +111,16 @@ install_redis() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 安装前端依赖
|
||||||
|
install_frontend_deps() {
|
||||||
|
local reason="${1:-前端依赖}"
|
||||||
|
info "安装$reason..."
|
||||||
|
(cd "$FRONTEND_DIR" && npm install) || {
|
||||||
|
error "$reason安装失败"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# 清理进程
|
# 清理进程
|
||||||
cleanup() {
|
cleanup() {
|
||||||
info "清理现有进程..."
|
info "清理现有进程..."
|
||||||
@ -180,34 +198,33 @@ check_deps() {
|
|||||||
check_cmd uv || exit 1
|
check_cmd uv || exit 1
|
||||||
|
|
||||||
# 检查前端依赖
|
# 检查前端依赖
|
||||||
if [ ! -d "apps/jingrow/frontend/node_modules" ]; then
|
if [ ! -d "$FRONTEND_DIR/node_modules" ]; then
|
||||||
warn "前端依赖未安装"
|
warn "前端依赖未安装"
|
||||||
info "安装前端依赖..."
|
install_frontend_deps "前端依赖" || exit 1
|
||||||
cd apps/jingrow/frontend && npm install && cd ../..
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 即使 node_modules 存在,也校验 vite 是否可用(可能之前安装不完整)
|
# 即使 node_modules 存在,也校验 vite 是否可用(可能之前安装不完整)
|
||||||
if [ ! -x "apps/jingrow/frontend/node_modules/.bin/vite" ]; then
|
if [ ! -x "$FRONTEND_DIR/node_modules/.bin/vite" ]; then
|
||||||
warn "未检测到 vite,可执行文件缺失,重新安装前端依赖..."
|
warn "未检测到 vite,可执行文件缺失,重新安装前端依赖..."
|
||||||
(cd apps/jingrow/frontend && npm install)
|
install_frontend_deps "前端依赖" || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 检查后端依赖(优先使用 uv)
|
# 检查后端依赖(优先使用 uv)
|
||||||
info "同步后端依赖 (uv)..."
|
info "同步后端依赖 (uv)..."
|
||||||
if [ -f "apps/jingrow/pyproject.toml" ]; then
|
if [ -f "$JINGROW_APP_DIR/pyproject.toml" ]; then
|
||||||
# 同步主项目依赖
|
# 同步主项目依赖
|
||||||
(cd apps/jingrow && uv sync) || {
|
(cd "$JINGROW_APP_DIR" && uv sync) || {
|
||||||
error "uv 同步失败"
|
error "uv 同步失败"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
# 安装所有节点的依赖(使用异步并行安装,提升性能)
|
# 安装所有节点的依赖(使用异步并行安装,提升性能)
|
||||||
info "安装节点依赖..."
|
info "安装节点依赖..."
|
||||||
(cd apps/jingrow && uv run python -c "from jingrow.utils.node_dependencies import install_all_nodes_dependencies; install_all_nodes_dependencies(max_concurrent=5)" 2>&1) || {
|
(cd "$JINGROW_APP_DIR" && uv run python -c "from jingrow.utils.node_dependencies import install_all_nodes_dependencies; install_all_nodes_dependencies(max_concurrent=5)" 2>&1) || {
|
||||||
warn "安装节点依赖失败,但继续执行"
|
warn "安装节点依赖失败,但继续执行"
|
||||||
}
|
}
|
||||||
elif [ -f "apps/jingrow/requirements.txt" ]; then
|
elif [ -f "$JINGROW_APP_DIR/requirements.txt" ]; then
|
||||||
warn "未发现 pyproject.toml,使用 requirements.txt 安装"
|
warn "未发现 pyproject.toml,使用 requirements.txt 安装"
|
||||||
(cd apps/jingrow && uv pip install -r requirements.txt) || {
|
(cd "$JINGROW_APP_DIR" && uv pip install -r requirements.txt) || {
|
||||||
error "uv pip 安装失败"
|
error "uv pip 安装失败"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@ -276,9 +293,9 @@ start_all() {
|
|||||||
npx --yes concurrently \
|
npx --yes concurrently \
|
||||||
--names "BACKEND,WORKER,FRONTEND" \
|
--names "BACKEND,WORKER,FRONTEND" \
|
||||||
--prefix-colors "blue,yellow,green" \
|
--prefix-colors "blue,yellow,green" \
|
||||||
"cd apps/jingrow && uv run python -m jingrow.app" \
|
"cd $JINGROW_APP_DIR && uv run python -m jingrow.app" \
|
||||||
"cd apps/jingrow && uv run python -m jingrow.dramatiq" \
|
"cd $JINGROW_APP_DIR && uv run python -m jingrow.dramatiq" \
|
||||||
"sleep 3 && cd apps/jingrow/frontend && npm run dev"
|
"sleep 3 && cd $FRONTEND_DIR && npm run dev"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 只启动前端
|
# 只启动前端
|
||||||
@ -287,7 +304,7 @@ start_frontend() {
|
|||||||
ensure_uv
|
ensure_uv
|
||||||
cleanup
|
cleanup
|
||||||
check_deps
|
check_deps
|
||||||
cd apps/jingrow/frontend && npm run dev
|
(cd "$FRONTEND_DIR" && npm run dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
# 只启动后端
|
# 只启动后端
|
||||||
@ -308,8 +325,8 @@ start_backend() {
|
|||||||
npx --yes concurrently \
|
npx --yes concurrently \
|
||||||
--names "BACKEND,WORKER" \
|
--names "BACKEND,WORKER" \
|
||||||
--prefix-colors "blue,yellow" \
|
--prefix-colors "blue,yellow" \
|
||||||
"cd apps/jingrow && uv run python -m jingrow.app" \
|
"cd $JINGROW_APP_DIR && uv run python -m jingrow.app" \
|
||||||
"cd apps/jingrow && uv run python -m jingrow.dramatiq"
|
"cd $JINGROW_APP_DIR && uv run python -m jingrow.dramatiq"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 停止服务
|
# 停止服务
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user