You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.5 KiB
58 lines
1.5 KiB
#!/usr/bin/env bash
|
|
# MiroSociety 一键部署脚本 (依赖安装)
|
|
# - 用 uv 创建后端 venv 并安装依赖
|
|
# - 用 npm 安装前端依赖
|
|
# 可重复执行,已安装会跳过。
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
BACKEND_DIR="$SCRIPT_DIR/backend"
|
|
FRONTEND_DIR="$SCRIPT_DIR/frontend"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
log() { echo -e "${GREEN}[deploy.sh]${NC} $*"; }
|
|
warn() { echo -e "${YELLOW}[deploy.sh]${NC} $*"; }
|
|
err() { echo -e "${RED}[deploy.sh]${NC} $*" >&2; }
|
|
|
|
# --- 检查命令依赖 ---
|
|
for cmd in uv npm node; do
|
|
if ! command -v "$cmd" >/dev/null 2>&1; then
|
|
err "缺少依赖命令: $cmd"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
VENV_DIR="$BACKEND_DIR/.venv"
|
|
VENV_PY="$VENV_DIR/bin/python3"
|
|
|
|
# --- 后端: uv venv + pip install ---
|
|
log "检查后端环境..."
|
|
if [[ ! -x "$VENV_PY" ]]; then
|
|
warn "未检测到 $VENV_DIR,使用 uv 创建 venv..."
|
|
(cd "$BACKEND_DIR" && uv venv)
|
|
fi
|
|
|
|
log "安装/更新后端依赖 (uv pip install -e .)..."
|
|
(cd "$BACKEND_DIR" && uv pip install -e .)
|
|
|
|
# --- 前端: npm install ---
|
|
log "检查前端环境..."
|
|
if [[ ! -d "$FRONTEND_DIR/node_modules" ]]; then
|
|
warn "未检测到 $FRONTEND_DIR/node_modules,开始 npm install..."
|
|
(cd "$FRONTEND_DIR" && npm install)
|
|
else
|
|
log "$FRONTEND_DIR/node_modules 已存在,跳过 (如需重装请删除该目录)"
|
|
fi
|
|
|
|
echo
|
|
log "部署完成 ✓"
|
|
echo -e " ${GREEN}后端 venv:${NC} $VENV_DIR"
|
|
echo -e " ${GREEN}前端依赖:${NC} frontend/node_modules"
|
|
echo
|
|
log "现在可以执行 ./start.sh 启动服务" |