mirror of https://github.com/allinssl/allinssl
156 lines
5.1 KiB
Markdown
156 lines
5.1 KiB
Markdown
# Gulp Build Tools 项目总结
|
||
|
||
## 项目概述
|
||
|
||
基于 Gulp 开发的构建文件调整工具库已经完成开发,提供了丰富的构建自动化功能。
|
||
|
||
## 功能特性
|
||
|
||
### ✅ 已实现的核心功能
|
||
|
||
1. **文件重命名** (`src/modules/rename.ts`)
|
||
- 支持文件和文件夹批量重命名
|
||
- 提供多种重命名助手函数(添加前缀、后缀、时间戳等)
|
||
- 支持函数式和字符串两种重命名方式
|
||
|
||
2. **文件内容替换** (`src/modules/replace.ts`)
|
||
- 支持正则表达式和字符串替换
|
||
- 提供常用替换模式(版本号、API URL、环境变量等)
|
||
- 支持函数式替换逻辑
|
||
|
||
3. **文件压缩** (`src/modules/compress.ts`)
|
||
- 支持 ZIP、TAR、GZIP 等多种压缩格式
|
||
- 可配置压缩级别
|
||
- 提供压缩工具函数和验证
|
||
|
||
4. **Git 操作** (`src/modules/git.ts`)
|
||
- 支持提交、拉取、推送、分支切换
|
||
- 集成 simple-git 库
|
||
- 提供 Git 状态检查和分支管理
|
||
- **支持多任务并行/串行执行**
|
||
|
||
5. **SSH 命令执行** (`src/modules/ssh.ts`)
|
||
- 支持远程命令执行
|
||
- 提供常用系统管理命令模板
|
||
- 支持密码和私钥认证
|
||
- **支持多服务器并行/串行执行**
|
||
|
||
6. **SFTP/FTP 上传** (`src/modules/upload.ts`)
|
||
- 支持 SFTP 和 FTP 两种协议
|
||
- 支持并行上传和目录清理
|
||
- 提供上传进度显示
|
||
- **支持多目标并行/串行上传**
|
||
|
||
### 🏗️ 架构设计
|
||
|
||
- **模块化设计**: 每个功能独立成模块,便于维护和扩展
|
||
- **TypeScript 支持**: 完整的类型定义和接口
|
||
- **工具函数库**: 提供丰富的助手函数和预设模板
|
||
- **错误处理**: 完善的错误处理和日志输出
|
||
- **任务组合**: 支持串行和并行任务组合
|
||
|
||
### 📦 项目结构
|
||
|
||
```
|
||
packages/gulp-build-tools/
|
||
├── src/
|
||
│ ├── index.ts # 主入口文件
|
||
│ ├── types.ts # 类型定义
|
||
│ └── modules/
|
||
│ ├── rename.ts # 文件重命名
|
||
│ ├── replace.ts # 内容替换
|
||
│ ├── upload.ts # 文件上传
|
||
│ ├── compress.ts # 文件压缩
|
||
│ ├── git.ts # Git 操作
|
||
│ └── ssh.ts # SSH 执行
|
||
├── test/ # 单元测试
|
||
├── examples/ # 使用示例
|
||
├── README.md # 详细文档
|
||
└── package.json # 依赖配置
|
||
```
|
||
|
||
### 📝 完整功能文档
|
||
|
||
项目包含详细的使用文档和示例:
|
||
|
||
1. **README.md**: 完整的 API 文档和使用指南
|
||
2. **examples/gulpfile.ts**: 丰富的使用示例
|
||
3. **单元测试**: 覆盖主要功能的测试用例
|
||
|
||
### 🔧 预设模板
|
||
|
||
提供开箱即用的部署预设:
|
||
|
||
- **前端项目部署**: Vue/React 项目自动化部署
|
||
- **后端项目部署**: Node.js 应用部署流程
|
||
- **通用部署**: 备份和部署通用模板
|
||
|
||
### 🚀 核心亮点
|
||
|
||
1. **一站式解决方案**: 集成了构建、部署、版本管理等全流程工具
|
||
2. **高度可配置**: 灵活的配置选项满足不同需求
|
||
3. **类型安全**: 完整的 TypeScript 支持
|
||
4. **易于扩展**: 模块化架构便于添加新功能
|
||
5. **丰富的预设**: 提供常用场景的预设模板
|
||
6. **多任务支持**: Git、Upload、SSH 支持并行/串行执行,显著提升部署效率
|
||
|
||
## 技术栈
|
||
|
||
- **Gulp 4.x**: 构建系统核心
|
||
- **TypeScript**: 类型安全和开发体验
|
||
- **SSH2/SFTP**: 远程文件传输
|
||
- **Simple-Git**: Git 操作集成
|
||
- **Archiver**: 文件压缩
|
||
- **Chalk**: 彩色日志输出
|
||
|
||
## 使用方式
|
||
|
||
```javascript
|
||
import { createBuildTools } from '@baota/gulp-build-tools';
|
||
|
||
const buildTools = createBuildTools({
|
||
verbose: true
|
||
});
|
||
|
||
// 创建构建流水线
|
||
const pipeline = buildTools.createBuildPipeline({
|
||
replace: [{ /* 配置 */ }],
|
||
rename: [{ /* 配置 */ }],
|
||
compress: { /* 配置 */ },
|
||
upload: { /* 配置 */ },
|
||
git: { /* 配置 */ },
|
||
ssh: { /* 配置 */ }
|
||
});
|
||
|
||
// 多任务支持(新增)
|
||
// 并行上传到多个服务器
|
||
const multiUpload = buildTools.multiUpload([
|
||
{ type: 'sftp', host: 'server1.com', /* ... */ },
|
||
{ type: 'sftp', host: 'server2.com', /* ... */ },
|
||
{ type: 'ftp', host: 'server3.com', /* ... */ }
|
||
], true); // true = 并行执行
|
||
|
||
// 并行执行多个 SSH 任务
|
||
const multiSSH = buildTools.multiSSHExecution([
|
||
{ host: 'web1.com', commands: ['pm2 restart app'] },
|
||
{ host: 'web2.com', commands: ['pm2 restart app'] },
|
||
{ host: 'api.com', commands: ['docker restart api'] }
|
||
], true);
|
||
```
|
||
|
||
## 项目状态
|
||
|
||
✅ **核心功能**: 已完成开发和测试
|
||
✅ **文档编写**: 完整的使用文档和示例
|
||
✅ **类型定义**: 完善的 TypeScript 类型支持
|
||
✅ **单元测试**: 主要功能测试用例
|
||
⚠️ **依赖安装**: 需要解决部分依赖包的兼容性问题
|
||
|
||
## 后续优化
|
||
|
||
1. **依赖优化**: 解决依赖包兼容性问题
|
||
2. **性能优化**: 大文件处理性能优化
|
||
3. **功能扩展**: 添加更多构建工具集成
|
||
4. **文档完善**: 添加更多使用场景示例
|
||
|
||
该工具库为构建自动化提供了完整的解决方案,具备生产环境使用的完整功能。 |