#!/bin/bash set -e set -x GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' echo -e "${YELLOW}开始部署流程...${NC}" # 首先加载环境变量 if [ "$NODE_ENV" = "production" ]; then echo -e "${GREEN}加载生产环境配置...${NC}" set -a source .env.production set +a else echo -e "${GREEN}加载开发环境配置...${NC}" set -a source .env.development set +a fi # 安装依赖 echo -e "${GREEN}安装依赖...${NC}" NODE_ENV= pnpm install --ignore-workspace # 生成 Prisma 客户端 echo -e "${GREEN}生成 Prisma 客户端...${NC}" npx prisma generate # 类型检查 echo -e "${GREEN}运行类型检查...${NC}" pnpm tsc --noEmit # 询问是否同步数据库架构 echo -e "${YELLOW}是否需要同步数据库架构? (y/n)${NC}" read -r sync_db if [ "$sync_db" = "y" ] || [ "$sync_db" = "Y" ]; then echo -e "${GREEN}开始同步数据库架构...${NC}" if [ "$NODE_ENV" = "production" ]; then npx prisma db push else npx prisma db push fi else echo -e "${YELLOW}跳过数据库同步${NC}" fi # 构建项目 echo -e "${GREEN}构建项目...${NC}" pnpm build # 检查并安装 PM2 echo -e "${GREEN}检查 PM2...${NC}" if ! command -v pm2 &> /dev/null; then echo -e "${YELLOW}PM2 未安装,正在安装 5.4.3 版本...${NC}" pnpm add pm2@5.4.3 -g else PM2_VERSION=$(pm2 -v) if [ "$PM2_VERSION" != "5.4.3" ]; then echo -e "${YELLOW}错误: PM2 版本必须是 5.4.3,当前版本是 ${PM2_VERSION}${NC}" echo -e "${YELLOW}请运行以下命令更新 PM2:${NC}" echo -e "${YELLOW}pm2 kill && pnpm remove pm2 -g && rm -rf ~/.pm2 && pnpm add pm2@5.4.3 -g${NC}" exit 1 else echo -e "${GREEN}PM2 5.4.3 已安装${NC}" fi fi # 启动服务 if [ "$NODE_ENV" = "production" ]; then echo -e "${GREEN}以生产模式启动服务...${NC}" pm2 start dist/src/main.js --name limq else echo -e "${GREEN}以开发模式启动服务...${NC}" pm2 start dist/src/main.js --name limq-dev --watch fi echo -e "${GREEN}部署完成!${NC}"