bug修复
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
# 前端部署脚本 - 强制构建优化
|
||||
|
||||
## 📋 更新说明
|
||||
|
||||
前端部署脚本 `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`,脚本会自动处理所有事情!
|
||||
|
||||
Reference in New Issue
Block a user