# 前端部署脚本 - 强制构建优化 ## 📋 更新说明 前端部署脚本 `web/deploy.sh` 已优化,现在**必须先执行** `npm run build` 进行构建,确保最新代码生效。 ## 🎯 优化内容 ### 之前的行为 - 如果 `dist` 目录不存在,脚本会报错并退出 - 需要手动执行 `npm run build` 后才能部署 ### 现在的行为 - **无论 dist 目录是否存在,都必须先执行** `npm run build` - 确保每次部署都使用最新代码 - 构建成功后自动继续上传 - 构建失败时报错并退出 ## 🚀 使用方法 ### 方式 1: 直接执行部署脚本(推荐) ```bash cd web bash deploy.sh ``` 脚本会自动: 1. 检查 `dist` 目录 2. 如果不存在,自动执行 `npm run build` 3. 构建成功后上传文件到服务器 ### 方式 2: 手动构建后部署 ```bash cd web npm run build bash deploy.sh ``` ## 📊 脚本流程 ``` 开始部署 ↓ 检查 npm 命令是否存在 ├─ 不存在 → 报错退出 └─ 存在 → 继续 ↓ 执行 npm run build(必须执行) ├─ 失败 → 报错退出 └─ 成功 → 继续 ↓ 验证 dist 目录是否存在 ├─ 不存在 → 报错退出 └─ 存在 → 继续 ↓ 检查 scp 命令是否存在 ├─ 不存在 → 报错退出 └─ 存在 → 继续 ↓ 上传 index.html ↓ 上传 assets 目录 ↓ 上传测试文件(如果存在) ↓ 显示部署完成信息 ``` ## ✅ 脚本特性 ### 强制构建 - 无论 `dist` 目录是否存在,都必须执行 `npm run build` - 确保每次部署都使用最新代码 - 避免旧代码被部署 ### 错误处理 - 检查 npm 命令是否存在 - 检查 scp 命令是否存在 - 构建失败时立即退出 - 上传失败时提供诊断信息 ### 用户友好 - 彩色化输出信息 - 清晰的进度提示 - 详细的错误信息 ## 🔍 常见场景 ### 场景 1: 首次部署 ```bash bash deploy.sh # 脚本会自动构建并部署 ``` ### 场景 2: 代码更新后部署 ```bash bash deploy.sh # 脚本会自动重新构建并部署 ``` ### 场景 3: 任何情况下都会重新构建 ```bash # 无论 dist 目录是否存在,脚本都会重新构建 bash deploy.sh # 确保最新代码生效 ``` ### 场景 4: 使用一键部署脚本 ```bash bash deploy-all.sh frontend # 会自动调用 web/deploy.sh,自动构建并部署 ``` ## 📝 脚本代码 关键部分: ```bash # 检查是否安装了npm if ! command -v npm &> /dev/null; then echo "❌ 错误: 未找到npm命令,请先安装Node.js" exit 1 fi # 执行构建(无论dist目录是否存在,都必须构建) echo "📦 开始构建前端项目..." if npm run build; then echo "✅ 前端项目构建成功" else echo "❌ 前端项目构建失败,请检查代码" exit 1 fi # 验证dist目录是否存在 if [ ! -d "dist" ]; then echo "❌ 错误: 构建后dist目录仍不存在,请检查构建配置" exit 1 fi ``` ## 🔧 故障排查 ### 问题 1: npm 命令不存在 **错误信息**: `未找到npm命令,请先安装Node.js` **解决方案**: ```bash # 安装 Node.js # macOS brew install node # Ubuntu/Debian sudo apt-get install nodejs npm # 验证安装 npm --version ``` ### 问题 2: 构建失败 **错误信息**: `前端项目构建失败,请检查代码` **解决方案**: ```bash # 检查代码是否有错误 cd web npm run build # 查看详细错误信息 # 根据错误信息修复代码 ``` ### 问题 3: scp 命令不存在 **错误信息**: `未找到scp命令,请安装OpenSSH客户端` **解决方案**: ```bash # macOS brew install openssh # Ubuntu/Debian sudo apt-get install openssh-client # 验证安装 scp -V ``` ## 📚 相关文档 - `web/deploy.sh` - 前端部署脚本 - `deploy-all.sh` - 一键部署脚本 - `一键部署说明.md` - 完整部署指南 ## ✨ 总结 前端部署脚本现在更加智能和便捷: - ✅ 自动检测并构建 - ✅ 错误处理完善 - ✅ 用户体验优化 - ✅ 与一键部署脚本无缝集成 现在只需执行 `bash deploy.sh` 或 `bash deploy-all.sh`,脚本会自动处理所有事情!